将消息发送到与 Microsoft Teams Graph 的聊天时出现 401 错误

401 error while sending a message into a chat with microsoft teams Graph

我有一个从我的 Microsoft 团队自定义选项卡向聊天 window 发送通知的方案。 因此,我正在尝试调用 Microsoft Graph API 将消息发送到特定的 chatId:Post https://graph.microsoft.com/beta/chats/${chatId}/messages 我可以成功获得 access_token,但是在调用 post 请求将通知发送到 chatId 时,我收到“401 UnAuthorized”错误。 我的代码有什么问题?

var message = {
            "body": {
                   "content": "Hello World"
                }
               };
                    fetch(`https://graph.microsoft.com/beta/${context.userObjectId}/chats/${chatId}/messages`, {
                        method: "POST",
                        mode: "cors",
                        cache: "no-cache",
                        headers: {
                           
                            'Content-Type': "application/json;charset=utf-8",
                            'Authorization': `Bearer ${fetched_accessToken}`
                        },
                        body: JSON.stringify(message)
                    }).then((response) => {
                         alert(response.statusText);
                    }).catch((err) => {
                       alert(err);
                    });    
                } 

这段代码有什么问题?

  • 我看到您正在尝试使用客户端凭据流(应用程序权限),但上述 API 调用仅适用于委托权限。这是 documentation。所以它是“设计使然”的,并且只能以这种方式工作。因此您看到了错误。
  • 您可以尝试使用委托权限进行上述 API 调用,然后您 会看到它会起作用。

如果您已经为您的选项卡安装了 Teams 应用程序,并且您还想在聊天中进行交流,您应该考虑创建一个机器人,并使用主动消息传递。在 https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages?tabs=dotnet and https://docs.microsoft.com/en-us/graph/teams-proactive-messaging

查看更多