我有一个SPA,我正尝试通过-POST https://graph.microsoft.com/v1.0/teams/{teamid}/channel/{channelid}/messages代表团队中的用户发送消息
通过相同的。
但我不断收到此错误-
{
"error": {
"code": "Unauthorized",
"message": "Unauthorized",
"innerError": {
"date": "2020-12-03T06:09:02",
"request-id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"client-request-id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
}
}
}
SPA使用Azure AD应用程序注册进行构建,并且已向该应用程序授予以下API权限:ChannelMessage.Send(Delegate),Chat.ReadWrite(Delegate),ChatMessage.Send(Delegate)。
从Microsoft Graph Explorer浏览器门户进行调用时,上述API可以工作。
我还比较了来自Graph Explorer和My Azure AD应用程序在jwt.io上的访问令牌,它们都具有作用域-[ChannelMessage.Send],这是将消息发送到通道所必需的
如果我错过了一些东西或做错了什么,在这方面需要帮助。
使用发送通道消息图API将消息发布到通道需要ChannelMessage.Send
Group.ReadWrite.All
权限
这是用于将消息发送到Channel的代码片段,你需要实现authProvider来传递它graphClient
,我已经为我的租户对其进行了测试,并且能够在Channel中成功发送消息。
以下是代码段
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var chatMessage = new ChatMessage
{
Body = new ItemBody
{
Content = "Hello World"
}
};
await graphClient.Teams["{TeamId}"].Channels["{ChannelId}"].Messages
.Request()
.AddAsync(chatMessage);
我已经实现身份验证,并使用MSAL js 2.0(身份验证代码流)制作了一个authProvider。联系 我曾试图给authProvider对象传递给graphClient和反应是一样的。
您可以尝试使用Microsoft身份客户端和Microsoft图形Auth dll创建authProvider吗?确保您具有上述提及的权限
感谢您的跟进。在我的项目中,实际上更改authProvider不是我的选择。但是我实现了使用DeepLinks想要完成的任务。感谢您的支持。