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
相关产品推荐
相关产品推荐

