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

Teams应用调用MS Graph API时非管理员用户遇403权限问题

排查Teams应用调用Planner Graph API 403权限问题

核心问题

部署在Teams平台的应用,非管理员用户登录时调用接口 GET https://graph.microsoft.com/v1.0/planner/plans/prpAA7SlvE6gwSEEjcESs5gACiII/tasks 返回403 Forbidden错误,提示无必要权限。已完成Teams管理员后台权限审批、Azure门户权限配置,但问题依旧。

报错信息

HTTPMessageHandler.ts:31          GET https://graph.microsoft.com/v1.0/planner/plans/prpAA7SlvE6gwSEEjcESs5gACiII/tasks 403 (Forbidden)
GraphErrorHandler.ts:62 Uncaught (in promise) Error: You do not have the required permissions to access this item.
at Function.value (GraphErrorHandler.ts:62:18)
at GraphErrorHandler.ts:89:31
at l (regeneratorRuntime.js:72:17)
at Generator._invoke (regeneratorRuntime.js:55:24)
at Generator.next (regeneratorRuntime.js:97:21)
at tslib.es6.js:74:71
at new Promise (<anonymous>)
at gs (tslib.es6.js:70:12)
at Function.value (GraphErrorHandler.ts:86:106)
at e.<anonymous> (GraphRequest.ts:386:37)

已完成配置

  • Teams管理员后台完成权限审批
  • Azure门户配置应用权限,代码中requiredResourceAccess配置如下:
    "requiredResourceAccess": [
            {
                "resourceAppId": "Microsoft Graph",
                "resourceAccess": [
                    {
                        "id": "Tasks.ReadWrite",
                        "type": "Scope"
                    },
                    {
                        "id": "Tasks.Read.Shared",
                        "type": "Scope"
                    },
                    {
                        "id": "User.Read",
                        "type": "Scope"
                    },
                    {
                        "id": "User.ReadBasic.All",
                        "type": "Scope"
                    },
                    {
                        "id": "Calendars.Read",
                        "type": "Scope"
                    },
                    {
                        "id": "Files.Read.All",
                        "type": "Scope"
                    },
                    {
                        "id": "Sites.Read.All",
                        "type": "Scope"
                    },
                    {
                        "id": "Group.Read.All",
                        "type": "Scope"
                    },
                    {
                        "id": "Group.ReadWrite.All",
                        "type": "Scope"
                    },
                    {
                        "id": "Tasks.Read",
                        "type": "Scope"
                    },
                    {
                        "id": "People.Read",
                        "type": "Scope"
                    }
                ]
            }
        ],
    
  • signInAudience设置为AzureADMyOrg

排查方向

1. 权限类型与调用场景不匹配

当前配置的全是委托权限(Scope类型),需明确调用模式:

  • 如果是用户登录后触发的前端/客户端调用(委托场景),检查管理员审批是否是对组织内所有用户生效,而非仅指定用户组;
  • 如果是应用后台无用户交互的调用,需切换为应用权限(Role类型),比如Tasks.Read.All、Tasks.ReadWrite.All,并重新完成管理员审批。

2. Planner计划的归属权限验证

Planner计划属于Microsoft 365组,需确认:

  • 非管理员用户是否是该计划所属组的成员?非组成员默认无法访问组内Planner资源;
  • 检查组的共享设置,确认是否允许非成员访问该组的Planner内容。

3. 权限审批的生效状态检查

  • 登录Azure门户进入应用注册的「API权限」页面,确认所有配置的委托权限均显示「已授予[你的组织名称]」,排除未完成审批的权限;
  • 部分权限审批后需等待15-30分钟生效,可间隔一段时间后重试。

4. 访问令牌的权限范围验证

获取用户登录后的Graph访问令牌,用JWT解析工具查看scp字段,确认是否包含Tasks.Read、Tasks.ReadWrite或Tasks.Read.Shared:

  • 若令牌中无对应权限,说明权限未正确授予,需重新检查配置和审批流程;
  • 注意Tasks.Read.Shared仅允许访问用户已被共享的计划,若目标计划未共享给该用户,仍会返回403。

5. Teams应用配置同步检查

  • 确认Teams应用manifest中是否添加了对应权限声明,避免因Teams端配置缺失导致权限令牌传递异常;
  • 重新发布Teams应用,确保权限配置更新已同步到租户内的Teams客户端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:05:51