使用Graph API发送Microsoft Teams私信时遇未授权错误的原因
错误原因分析及解决方案
核心原因
你当前使用的是应用权限(Application-Only)模式(通过Client Credential Flow生成的token),而Microsoft Graph API对这种权限模式下的Teams消息发送做了严格限制:仅允许用于历史消息导入场景,不支持实时发送普通私信。
具体限制说明
应用权限模式下,调用POST /chats/{chat_id}/messages接口只能用于导入外部系统的历史消息,而非实时触发的新消息。这是平台为了避免应用无限制发送消息而设置的权限边界。
解决方法
要实现实时发送Teams私信,必须切换为**委派权限(Delegated Permissions)**模式:
- 给Azure AD应用添加委派权限:比如
ChatMessage.Send或Chat.ReadWrite - 使用**授权码流(Authorization Code Flow)**获取token,该token会携带具体用户的身份信息,代表用户发送消息
补充说明
你能成功生成聊天ID是因为应用权限允许创建一对一聊天,但发送消息的权限逻辑和创建聊天不同,因此出现权限不匹配的错误。
内容的提问来源于stack exchange,提问作者Anish
相关产品推荐
相关产品推荐

