Я работаю над выполнением входа с помощью кнопки Google. Рабочий процесс работает, и по URL-адресу обратного вызова я получаю токен, который я отправляю в свой успокоительный API. API проверяет это, а затем вызывает маршрут https://oauth2.googleapis.com/tokeninfo с id_token в качестве параметра запроса. Однако в ответе, который я получаю, отсутствует информация о профиле (имя_файла, имя_имя, изображение и т. Д. c).
Вот фрагмент кода javascript, в котором я запускаю окно входа в систему (область действия профиля)
const initGapi = (): void => {
const g = window.gapi;
g.load('auth2', () => {
g.auth2.init({
client_id: googleClientId[environmentType],
scope: 'profile email openid',
ux_mode: 'redirect',
redirect_uri: window.location.origin + googleOAuth2Callback
});
});
};
На экране согласия указано «Чтобы продолжить, Google предоставит Lingco Classroom ваше имя, адрес электронной почты, языковые предпочтения и изображение профиля. Перед использованием этого приложения вы можете просмотреть список Lingco Classroom. Политика конфиденциальности и условия обслуживания. "
Похоже, я запрашиваю правильную информацию.
Вот ответ, который я получаю в параметрах запроса на URL обратного вызова (токены кратко для краткости):
{
"client_id": "10...q0.apps.googleusercontent.com",
"id_token": "eyJhbGc...Hxkg",
"login_hint": "AJDL....mz3Kw",
"scope": "email profile openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email"
}
Опять же, профиль включен в область действия.
Затем, когда я вызываю маршрут https://oauth2.googleapis.com/tokeninfo?id_token=eyJhbGc...Hxkg, я получаю:
{
"iss": "accounts.google.com",
"azp": "105...o1q0.apps.googleusercontent.com",
"aud": "105...o1q0.apps.googleusercontent.com",
"sub": "100289254709626712724",
"hd": "lingco.io",
"email": "seth@lingco.io",
"email_verified": "true",
"iat": "1585368365",
"exp": "1585371965",
"jti": "795...a15a",
"alg": "RS256",
"kid": "53c66...c63",
"typ": "JWT"
}
Который не включает информацию профиля. Область запрашивает информацию о профиле, экран согласия включает область профиля, как и ответ на обратный вызов. Тем не менее, когда я go на URL tokeninfo, информация о профиле пользователя не там. Можно ли получить имя пользователя и информацию о профиле с помощью токена id?