«NoPermissionsInAccessToken» при попытке получить фотографию профиля пользователя с помощью Microsoft Graph API + react-adal - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь получить фотографию профиля пользователя, используя конечную точку https://graph.microsoft.com/v1.0/me/photo/$value и следуя этим инструкциям . В нашем приложении 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 Portal Я делегировал User.Read разрешения для приложения: Изображение разрешений

В чем может быть проблема?

1 Ответ

1 голос
/ 29 мая 2020

Вы проверяете токен, вызывая другую конечную точку локально (v1.0/me), чем ваше приложение вызывает (v1.0/me/photo/$value).

Вы можете вручную проверить токены доступа, используя такие инструменты, как https://jwt.io/ и https://jwt.ms/

Согласно комментарию @ sruthi-j-msft-identity, v1.0/me/photo недоступен для личных аккаунтов. Попробуйте использовать beta/me/photo/$value в своем приложении React, если вы работаете с личными учетными записями. ref: https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-beta#permissions

Бета-версия API содержит функции предварительного просмотра и не должна использоваться в производственных системах.

...