MS GraphAPI权限未在Token中显示,调用/people接口遇403错误
解决MS Graph API中People.Read权限未出现在Token导致的403错误
问题回顾
开发基于MS Graph API的应用,使用Postman测试代表用户访问流,已配置读写日历、读取联系人的权限,但调用/people接口时返回403错误:
{ "error": { "code": "ErrorAccessDenied", "message": "Access is denied. Check credentials and try again." } }
解析Token发现未包含People.Read权限,多次登出重新获取Token无效。
排查与解决步骤
1. 确认Azure AD应用权限配置
- 登录Azure门户进入应用注册页面,检查API权限标签:
- 确保添加的是委托权限(而非应用权限),且
People.Read权限已在列表中 - 若使用工作/学校账号,需点击授予管理员同意;若为个人Microsoft账号,需确保用户在授权流程中已同意该权限
- 检查权限状态:
People.Read权限旁应显示“已授予”(管理员授权)或等待用户授权(个人账号)
- 确保添加的是委托权限(而非应用权限),且
2. 检查Postman授权请求的Scope参数
- 在Postman的Authorization标签中选择Authorization Code授权类型:
- 确认
Scope字段明确包含People.Read(可与其他权限一并列出,例如Calendars.ReadWrite People.Read) - 若未添加该scope,即使Azure应用配置了权限,Token也不会包含该权限
- 确认
3. 清除Postman授权缓存并重新授权
- 在Postman的Authorization标签底部点击Clear Tokens,清除旧授权缓存
- 重新点击Get New Access Token,在弹出的授权页面中确认
People.Read权限已列出,完成授权后获取新Token - 解析新Token(可使用jwt.ms),检查
scp字段是否包含People.Read
4. 验证用户与应用的租户一致性
- 若使用工作/学校账号,确保测试用户和应用注册属于同一个Azure AD租户
- 若应用注册时选择“仅限此组织目录中的账户”,外部用户无法授权该应用的权限
内容的提问来源于stack exchange,提问作者Hrabal
相关产品推荐
相关产品推荐

