Как получить электронную почту от конечной точки Microsoft graph api oidc/userinfo

Я настроил oauth через azure, я получил код авторизации, который я обменял на access_token. Затем я пытаюсь использовать этот токен доступа для получения данных о пользователе, включая электронную почту, как описано в документации (https://learn.microsoft.com/en-us/azure/active-directory/develop/userinfo). Однако в ответ он не возвращает мне электронное письмо.

      {
    "sub": "<redacted>",
    "name": "John Doe",
    "family_name": "John",
    "given_name": "Doe",
    "picture": "https://graph.microsoft.com/v1.0/me/photo/$value"
}

Документация предполагает, что для возврата электронной почты в ответе требуется область электронной почты. https://learn.microsoft.com/en-us/azure/active-directory/develop/userinfo#userinfo-response

Однако я считаю, что уже указываю, что мне нужна область электронной почты.

Разрешения приложения

/oauth2/v2.0/token (область показывает профиль, openid, адрес электронной почты и user.Read)

Что я упускаю?>

1 ответ

Мне не удалось получить AzureADuserinfoконечная точка, чтобы предоставить мне адрес электронной почты пользователя, даже если область действия определена в оригинале/authorizeзапрос, а также разрешение API электронной почты на портале Azure.

Что мне помогло, так это получение этой информации из id_token. В запросе на/oauth2/v2.0/token, что делается раньше, извлекается не только токен доступа, но и id_token, а в его полезной нагрузке находится адрес электронной почты пользователя и дополнительная информация. Кажется, даже Microsoft предлагает сделать это здесь, в разделе «Рассмотрите возможность использования вместо этого токена идентификатора»: https://learn.microsoft.com/en-us/azure/active-directory/develop/userinfo#userinfo-response

Другие вопросы по тегам