调用Microsoft Graph /v1.0/me接口返回403 Forbidden权限问题排查
解决调用Graph API /me接口返回403 Forbidden的问题
针对你遇到的Authorization_RequestDenied权限不足错误,按以下步骤排查:
1. 确认权限类型与状态
调用/me接口必须使用委托权限(Delegated permissions),而非应用权限。检查Azure门户中你的应用API权限:
- 确保已添加Microsoft Graph的
User.Read委托权限(这是调用/me的最小权限) - 若为企业租户应用,需确认该权限已获得管理员同意;若为个人应用,需确认用户在授权流程中同意了该权限
2. 验证SDK请求的权限范围
检查PHP SDK中请求token的scope参数,必须包含User.Read,示例代码:
$scopes = ['https://graph.microsoft.com/User.Read'];
若scope拼写错误或遗漏,会导致token不包含所需权限。
3. 解析Access Token确认权限
获取到access token后,用JWT解析工具查看token内的scp字段,确认是否包含User.Read。如果该字段没有此权限,说明授权流程未正确获取权限,需检查scope参数或授权同意环节。
4. 对比正常应用的配置
将新应用与之前正常运行的应用做以下对比:
- 应用注册的类型(如Web应用/原生应用)与授权流程是否一致
- Azure门户中的API权限配置(权限类型、是否同意)是否相同
- SDK中的scope参数、redirect URI等配置是否匹配
5. 排查租户限制
若为企业租户,可能存在条件访问策略限制新应用的访问,或管理员未开放对应权限的同意权限,需联系租户管理员确认。
内容的提问来源于stack exchange,提问作者Speedy059
相关产品推荐
相关产品推荐

