调用Microsoft Graph API /me/chats时遇授权缺失问题求助
问题描述
调用https://graph.microsoft.com/v1.0/me/chats API时,已在请求头传入Authorization Bearer令牌,但收到如下错误:
{ "error": { "code": "Forbidden", "message": "No authorization information present on the request.", "innerError": { "date": "2023-01-12T09:37:45", "request-id": "1975336f-42b0-49a1-8110-a1092f07c130", "client-request-id": "1975336f-42b0-49a1-8110-a1092f07c130" } } }
生成令牌时使用的范围:
user.read Mail.Send Mail.Read Mail.ReadBasic Mail.ReadWrite GroupMember.Read.All Group.Read.All Directory.Read.All Group.ReadWrite.All Directory.ReadWrite.All Chat.ReadBasic Chat.Read Chat.ReadWrite openid profile offline_access
令牌获取端点为https://login.microsoftonline.com/common/oauth2/v2.0/token,该令牌可正常调用邮件收发等API,但无法调用Teams相关API(如/chats)。
解决步骤
- 检查令牌实际权限范围
本地解码JWT令牌,查看scp字段是否包含Chat.Read/Chat.ReadBasic/Chat.ReadWrite权限。若实际无这些权限,说明授权过程中未成功获取,需检查应用权限配置或用户授权环节。 - 确认应用注册权限配置
在Azure AD应用注册中,添加Microsoft Graph的委托权限(Chat.Read/Chat.ReadBasic/Chat.ReadWrite),并完成管理员同意(组织账户场景下部分权限需管理员批准)。 - 更换租户专属令牌端点
将令牌获取端点从common替换为具体租户ID或域名的端点,例如https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token,避免多租户场景下权限映射异常。 - 验证请求头格式
确保Authorization头格式为Bearer {token},注意Bearer后有空格,令牌无多余空格或换行符,避免因格式问题导致服务端无法识别授权信息。 - 检查用户Teams许可证
确认调用API的用户拥有有效Microsoft Teams许可证,无许可证用户无法访问Teams相关Graph API。
内容的提问来源于stack exchange,提问作者Bhavya Ardeshana
相关产品推荐
相关产品推荐

