【问题标题】:"NoPermissionsInAccessToken" when trying to get user profile photo using Microsoft Graph API + react-adal尝试使用 Microsoft Graph API + react-adal 获取用户个人资料照片时出现“NoPermissionsInAccessToken”
【发布时间】:2020-05-29 23:35:48
【问题描述】:

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

可能是什么问题?

【问题讨论】:

  • 根据文档,GET /me/photo "1.0 版本中的此操作仅支持用户的工作或学校邮箱,不支持个人邮箱。"
  • 我正在使用工作帐户
  • 根据错误,问题出在令牌中,而不是来自图形 API。请在jwt.ms 中检查您的令牌。对于 API,您可以签入图形资源管理器。

标签: reactjs azure adal


【解决方案1】:

您正在通过在本地调用与您的应用调用 (v1.0/me/photo/$value) 不同的端点 (v1.0/me) 来验证令牌。

您可以使用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

测试版 API 包含预览功能,不应用于生产系统。

【讨论】:

  • 我知道端点不同。我只是证明了至少某些端点有效,因此我的令牌必须至少对此有效。我正在使用工作帐户
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多