我正在尝试使用https://graph.microsoft.com/v1.0/me/photo/$value
端点并按照these的说明来获取用户的个人资料照片。在我们的React应用程序中,我们使用的是react-adal
,因此我首先使用adalGetToken(authContext, "https://graph.microsoft.com/")
获得了访问令牌,然后使用
axios.get("https://graph.microsoft.com/v1.0/me/photo/$value", {
headers: {
Authorization: `Bearer ${token}`,
},
})
但是,答复是
{
"error": {
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood.",
"innerError": {
"request-id": "d2ed76f0-7f35-4014-bc53-xxxxxxxxxxxx",
"date": "2020-05-29T09:27:12"
}
}
}
当我使用相同的令牌拨打https://graph.microsoft.com/v1.0/me
时,会得到正确的响应,例如
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "<id>",
...
}
在Azure门户中,我已为应用程序委派User.Read
的权限:Image of the permissions
可能是什么问题?
答案 0 :(得分:1)
您正在通过本地调用与应用程序(v1.0/me
)不同的终结点(v1.0/me/photo/$value
)来验证令牌。
您可以使用https://jwt.io/和https://jwt.ms/之类的工具手动验证访问令牌
根据@ sruthi-j-msft-identity的评论,v1.0/me/photo
不适用于个人帐户。如果您使用个人帐户,请尝试在您的React应用程序中使用beta/me/photo/$value
。参考:https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-beta#permissions
beta API包含预览功能,不应用于生产系统。