使用PHP调用MS Graph API遇403权限不足问题求助
解决Graph API调用403权限不足问题
确认权限已完成管理员同意:
你添加Calendars.ReadWrite应用权限后,必须在Azure应用注册页面点击「授予管理员同意」按钮。application类型权限只有经过管理员同意,令牌才能获取到对应权限,仅添加权限到列表不会生效。修正端点拼写错误:
你调用的端点是https://graph.microsoft.com/beta/users/xx@xx.xx/calandars,其中calandars拼写错误,正确应为calendars(多一个字母e)。拼写错误可能导致路由匹配异常,进而触发权限相关报错,先修正拼写后重试。验证Access Token的权限内容:
将获取到的access token解码,查看roles字段是否包含Calendars.ReadWrite:- 若没有,检查请求令牌时的scope参数是否为
https://graph.microsoft.com/.default(应用权限必须使用该scope); - 再次确认Azure权限列表中该权限的状态是否为「已授予」。
- 若没有,检查请求令牌时的scope参数是否为
检查目标用户日历的权限配置:
若调用自己的日历端点能成功,但目标用户的不行,需确认目标用户的日历是否设置了拒绝应用访问的权限,可让目标用户检查日历的共享/权限设置。优先使用v1.0 API版本测试:
beta版本API可能存在不稳定情况,建议切换到https://graph.microsoft.com/v1.0/users/xx@xx.xx/calendars测试,排除beta版本的特殊问题。
内容的提问来源于stack exchange,提问作者Patrick Rennings
相关产品推荐
相关产品推荐

