Как получить электронную почту от конечной точки 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