调用Microsoft Graph API的me/contacts接口返回404错误求助
我按照微软官方React SPA教程完成Azure AD应用注册,添加了Contacts.Read委托权限并完成授权同意,能成功调用https://graph.microsoft.com/v1.0/me接口,但使用同一令牌调用https://graph.microsoft.com/v1.0/me/contacts时收到HTTP 404错误,错误响应如下:
{
"error": {
"code": "ResourceNotFound",
"message": "Resource could not be discovered.",
"innerError": {
"date": "2023-03-23T14:50:53",
"request-id": "d4e9c0cc-06f4-4c2a-9969-7889a968f5ba",
"client-request-id": "d4e9c0cc-06f4-4c2a-9969-7889a968f5ba"
}
}
}
通过Graph Explorer可以正常获取该用户的联系人,请问遗漏了什么配置?
访问令牌未包含目标权限
解析你的访问令牌,检查scp字段是否包含Contacts.Read。如果没有,需要在MSAL的请求配置中明确将Contacts.Read加入scopes数组,确保请求令牌时获取到该权限范围。用户邮箱类型不兼容
me/contacts接口仅支持Exchange Online邮箱(包括工作/学校账户、个人Microsoft账户的Outlook邮箱)。如果当前登录用户使用的是本地Exchange服务器邮箱或其他非Outlook兼容邮箱,会返回404错误。确认用户邮箱类型符合要求。权限授予未生效
尽管完成了权限同意操作,可能存在权限同步延迟。尝试退出应用后重新登录,或者在Azure AD的应用权限管理页面,确认Contacts.Read权限的状态为“已授予”。请求格式或端点错误
核对请求URL是否完全正确,确保没有拼写错误。同时检查请求头是否正确设置了Authorization: Bearer {你的访问令牌},避免令牌格式错误或遗漏授权头。
内容的提问来源于stack exchange,提问作者Nam Nguyen

