You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Graph API向Teams频道发消息返回HTTP未授权错误该如何解决?

调用Graph API发送Teams频道消息401未授权错误排查指南

你当前调用的是向指定Teams频道发送消息的Graph接口:POST /teams/{team-id}/channels/{channel-id}/messages,出现401未授权错误可按以下步骤逐一排查:

1. 应用权限配置校验

  • 你在Azure AD中注册的应用必须配置对应接口的访问权限,该接口支持两类权限:
    • 委托权限(有用户登录的交互场景):至少配置ChannelMessage.Send、Group.ReadWrite.All二者其一,配置完成后必须完成管理员同意操作,未做管理员同意的权限不会生效
    • 应用权限(无用户的后台服务场景):至少配置ChannelMessage.Send、Group.ReadWrite.All二者其一,同样必须完成管理员同意才能生效
  • 检查你获取Access Token时传入的scope参数:委托权限场景可传入对应权限的完整路径或https://graph.microsoft.com/.default;应用权限场景必须传入https://graph.microsoft.com/.default,scope错误会导致返回的token没有对应权限

2. Access Token有效性校验

  • 将你获取到的Access Token复制到JWT解析工具中查看内容,确认以下字段取值正确:
    • aud(受众)字段必须为https://graph.microsoft.com,如果填错了资源地址,会直接返回401
    • 委托权限场景下检查scp字段、应用权限场景下检查roles字段,必须包含你之前配置的对应权限,没有对应权限说明权限配置或同意流程存在问题
    • 检查exp(过期时间)字段,确认token未过期,过期token调用任何Graph接口都会返回401

3. 目标资源校验

  • 确认请求路径中{team-id}、{channel-id}两个参数取值正确,如果你填写的团队ID、频道ID不存在,或者当前使用的账号/应用没有该团队的访问权限,也会返回401类错误
  • 你可以先调用GET /teams/{team-id}和GET /teams/{team-id}/channels/{channel-id}两个接口,验证ID的正确性以及当前token对该资源的访问权限

4. 请求格式校验

  • 确认HTTP请求头中的Authorization字段格式正确,必须为Bearer {你的Access Token},注意Bearer和token内容之间必须有一个空格,多写、漏写空格都会导致鉴权失败
  • 确认请求的根域名和版本号正确,正确的完整接口路径为https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messages,填错版本号或域名都会导致鉴权失败

内容的提问来源于stack exchange,提问作者Tsang So

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 05:12:02