尝试使用Microsoft Graph API + react-adal获取用户个人资料照片时显示“ NoPermissionsInAccessToken”

时间:2020-05-29 09:34:16

标签: reactjs azure adal

我正在尝试使用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

可能是什么问题?

1 个答案:

答案 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包含预览功能,不应用于生产系统。