Microsoft OAuth. Как после входа в систему получить адрес электронной почты и отображаемое имя пользователя?
Я добавляю аутентификацию Microsoft в Firebase. Я могу успешно войти в систему, но мне нужен адрес электронной почты и отображаемое имя пользователя. Как я могу получить это? Пока что это то, что у меня есть.
export function* signInWithMicrosoft() {
yield microsoftProvider.setCustomParameters({
prompt: 'consent',
tenant: 'consumers',
});
const res = yield signInWithPopup(auth, microsoftProvider);
try {
const credential = yield OAuthProvider.credentialFromResult(res);
const { accessToken, idToken } = credential;
yield console.log(credential);
} catch (err) {
return err;
}
}
1 ответ
Вы можете использовать Microsoft Graph API, чтобы получить адрес электронной почты и отображаемое имя вошедшего в систему пользователя, выполнив следующий запрос:
GET https://graph.microsoft.com/v1.0/me
Чтобы выполнить приведенный выше запрос, вам необходимо добавить
User.Read
разрешение в вашем приложении Azure AD, как показано ниже:
Поскольку у вас уже есть токен доступа , просто измените свой код для запуска.запрос, как показано ниже:
export function* signInWithMicrosoft() {
yield microsoftProvider.setCustomParameters({
prompt: 'consent',
tenant: 'consumers',
});
const res = yield signInWithPopup(auth, microsoftProvider);
try {
const credential = yield OAuthProvider.credentialFromResult(res);
const { accessToken, idToken } = credential;
const response = yield fetch('https://graph.microsoft.com/v1.0/me', {
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
const data = yield response.json();
const { displayName, mail } = data;
yield console.log(displayName, mail);
} catch (err) {
return err;
}
}
Вы также можете декодировать токен доступа, вставив его в jwt.ms и проверив
scp
заявить о разрешениях, которые он имеет:
Когда я побежал то же самое
GET
запрос в Postman, включив токен на предъявителя, я успешно получил ответ с адресом электронной почты вошедшего в систему пользователя и отображаемым именем, как показано ниже:
GET https://graph.microsoft.com/v1.0/me
Authorization: Bearer <token>
Ответ: