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

已配置TeamsActivity.Send权限仍提示请求缺少角色权限求助

问题排查与解决方法

错误原因

  • 你使用的客户端凭据(client_credentials)授权流,和配置的委托权限TeamsActivity.Send不兼容。客户端凭据流是应用以自身身份调用API,仅支持应用权限;而委托权限是代表用户调用API,必须搭配需要用户登录的授权流(比如授权码流)。
  • 用client_credentials流请求令牌时,指定scope=https://graph.microsoft.com/.default,只会返回包含应用权限的令牌,不会带上你配置的委托权限,所以令牌里没有TeamsActivity.Send权限,调用API自然触发权限缺失错误。

解决方法

方案一:改用授权码流获取令牌(适合代表用户发送通知的场景)

  • 先确认Azure AD应用中的TeamsActivity.Send委托权限已经完成管理员同意(部分企业租户要求管理员统一授权,个人租户可能用户自行授权即可)。
  • 切换到授权码授权流程:
    1. 引导用户访问授权端点,参数包含client_id、redirect_uri、scope=https://graph.microsoft.com/TeamsActivity.Send、response_type=code。
    2. 用户登录并授权后,拿到授权码,再调用令牌端点,使用grant_type=authorization_code,搭配code、client_id、client_secret、redirect_uri参数获取令牌。
    3. 用这个令牌调用https://graph.microsoft.com/v1.0/users/{userId}/teamwork/sendActivityNotification接口即可。

方案二:改用应用权限(适合应用以自身身份发送通知的场景)

  • 该接口支持应用权限TeamsActivity.Send.All,先在Azure AD应用注册中添加这个应用权限。
  • 对该应用权限完成管理员同意。
  • 继续使用client_credentials流获取令牌,此时令牌里会包含TeamsActivity.Send.All权限,调用接口就能正常执行。

验证技巧

获取令牌后,可以用jwt.ms解析令牌,查看scp(委托权限)或roles(应用权限)字段,确认是否包含对应的权限,快速排查令牌是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:13:16