通过 Graph Api 向 Teams 发送聊天/频道消息
Sending chat / channel message to Teams via Graph Api
我有一个 SPA,我正在尝试代表 Teams 中的用户通过 -
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(代表),Chat.ReadWrite(代表),ChatMessage.Send(代表)。
以上 API 在从 Microsoft Graph 资源管理器门户调用时有效。
我还比较了来自 Graph Explorer 和 My Azure AD 应用程序的 jwt.io 上的访问令牌,两者都有范围 -
[ ChannelMessage.Send ] 向频道发送消息所必需的
如果我遗漏了什么或做错了什么,需要这方面的帮助。
我不是这方面的专家,但我认为您不能直接从不受信任的客户端(即 SPA)直接连接到 Graph,并且您首先需要获得“代表的”令牌(这意味着您需要拥有自己的后端 API 才能建立安全连接并检索此令牌)。您可以在此处查看此示例(dotnet 和节点):https://github.com/HiltonGiesenow/teams-dev-samples/tree/add-tabs-sso-sample
使用 Send Channel Message Graph API 向频道发布消息需要 ChannelMessage.Send
Group.ReadWrite.All
权限
这是向频道发送消息的代码片段,你需要实现 authProvider 才能传递它 graphClient
,我为我的租户测试了它,我能够成功地在频道中发送消息.
下面是代码片段
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);
我有一个 SPA,我正在尝试代表 Teams 中的用户通过 - 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(代表),Chat.ReadWrite(代表),ChatMessage.Send(代表)。
以上 API 在从 Microsoft Graph 资源管理器门户调用时有效。
我还比较了来自 Graph Explorer 和 My Azure AD 应用程序的 jwt.io 上的访问令牌,两者都有范围 - [ ChannelMessage.Send ] 向频道发送消息所必需的
如果我遗漏了什么或做错了什么,需要这方面的帮助。
我不是这方面的专家,但我认为您不能直接从不受信任的客户端(即 SPA)直接连接到 Graph,并且您首先需要获得“代表的”令牌(这意味着您需要拥有自己的后端 API 才能建立安全连接并检索此令牌)。您可以在此处查看此示例(dotnet 和节点):https://github.com/HiltonGiesenow/teams-dev-samples/tree/add-tabs-sso-sample
使用 Send Channel Message Graph API 向频道发布消息需要 ChannelMessage.Send
Group.ReadWrite.All
权限
这是向频道发送消息的代码片段,你需要实现 authProvider 才能传递它 graphClient
,我为我的租户测试了它,我能够成功地在频道中发送消息.
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);