ClientSecretによるアプリケーションアクセスのアクセス許可にはTeamwork.Migrate.All権限だけですが、注意にあるように制限されてます。
委任の方であればChannelMessage.Send権限で投稿可能です。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Visual Studio 2022 .NET8.0 にて、コンソールアプリケーションにて作成し、Nugetで Microsoft.Graph 5.54.0、Azure.Identity 1.11.3 を導入し、チャットにメッセージを送信しようとして、 現在下記のようなソースコードを作成しました。
using Azure.Identity;
using Microsoft.Graph;
using Microsoft.Graph.Models;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
var clientId = "(クライアントID)";
var tenantId = "(テナントID)";
var clientSecret = "(シークレットの値)";
var chatId = "(chatID)";
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential);
var requestBody = new ChatMessage
{
Body = new ItemBody
{
Content = "Hello world",
},
};
var result = await graphClient.Chats[chatId].Messages.PostAsync(requestBody);
}
}
}
するとgraphClient.Chats[chatId].Messages.PostAsyncから例外が発生し、
Microsoft.Graph.Models.ODataErrors.ODataError
Missing role permissions on the request. API requires one of 'Teamwork.Migrate.All'. Roles on the request
とのことで、権限が足りないというメッセージが返ってくるようです。
ただAzureAD上で具体的にどの権限をつければよいかわからず、Teamwork.Migrate.Allという内容を見つけられませんでした。
そこで質問なのですが、
1.チャットの送信にはどの権限をつければよいでしょうか?
2.そもそも上記エラーは本当に権限不足で返ってきているでしょうか?
何かコード的に誤りがありますでしょうか?
3.chatIDが正しいかも怪しいです。グループチャットを作っており、
というアドレス(アスタリスクは修正)なのですが、?以前の「19:jp8wD9-dxsNmame-********-rw19DktnuhTBD6pMI1@thread.v2」
をIDとしていますが、これは正しいでしょうか?
わかりましたら、回答いただけますと助かります。