调用Microsoft Graph API获取Teams组事件返回Access Denied如何解决
Microsoft Graph 调用Teams组日历接口返回AccessDenied错误修复方案
问题核心原因
你遇到的访问拒绝问题90%以上是权限配置不匹配导致,而非用户组身份的问题,按以下步骤逐一排查即可:
排查修复步骤
- 第一步:修正应用注册的权限配置
Group.ReadWrite.All权限仅覆盖组基础信息、成员管理等操作,不包含组日历访问权限,你需要在Azure AD应用注册的「API权限」页额外添加如下权限:- 权限类型选委托权限(你用的password grant属于用户委托登录场景,不能选应用程序权限)
- 权限名称选
Calendars.Read.Group(仅读日历)或Calendars.ReadWrite.Group(可读写日历) - 权限添加完成后必须点击「授予<租户名>的管理员同意」,否则权限不会生效
- 第二步:重新获取身份令牌
权限配置更新后,之前获取的旧token已经无效,需要重新调用token接口拉取新的token:
你使用的v1令牌接口参数无需调整,确认resource参数值为https://graph.microsoft.com即可拿到新token后可以解析JWT内容,检查
scp声明中是否包含Calendars.Read.Group或Calendars.ReadWrite.Group,没有则说明权限配置仍未生效 - 第三步:确认目标组类型正确
只有Microsoft 365组(也就是Teams绑定的组)才有日历功能,安全组、通讯组均无日历资源,确认你调用接口时传入的GROUP id对应的是Microsoft 365组 - 第四步:排查条件访问限制
如果以上配置都正确仍报错,去Azure AD「登录日志」中查看对应认证请求的详情,确认是否有条件访问策略限制了当前用户/应用访问Graph日历接口,调整对应策略即可
Graph Explorer测试注意事项
在Graph Explorer中测试时需要手动开启对应权限:点击界面顶部「权限」选项卡,找到Calendars.Read.Group权限勾选后重新登录授权,再发起请求即可正常返回结果
你收到的错误返回为通用权限错误,只要权限配置正确即可解决:
{ "error": { "code": "ErrorAccessDenied", "message": "Access is denied. Check credentials and try again." } }
内容的提问来源于stack exchange,提问作者Murad Shukurlu
相关产品推荐
相关产品推荐

