Я настраиваю симпатичный rails API, и мне нужно получить токен oauth2 от Google, а затем использовать его для получения базовой информации пользователя c (полное имя, адрес электронной почты и т. Д. c).
Токен создается мобильным приложением и отправляется в API.
Следующий код работает для получения электронной почты пользователя, но не для дополнительных полей
def google(auth)
require 'google/apis/oauth2_v2'
oauth2 = Google::Apis::Oauth2V2::Oauth2Service.new
google_profile = oauth2.tokeninfo(id_token: auth)
end
I Я пытался получить информацию о пользователе, вызывая userinfo следующими способами:
google_profile = oauth2.get_userinfo
google_profile = oauth2.get_userinfo_v2
Но ни одна из них не работает, я получаю Google::Apis::AuthorizationError (Unauthorized)
Не могу найти способ найти чтобы настроить gem для правильной настройки ключей авторизации, я пробовал
oauth2.key='AIz...ryg'
Также пытался использовать аутентификацию json, например:
{
"web": {
"client_id":"xxx.apps.googleusercontent.com",
"project_id":"...",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"aZ...sl"
}
}
Но я всегда получаю одно и то же исключение. Вызов ex.body
возвращает
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"errors": [
{
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"domain": "global",
"reason": "unauthorized"
}
],
"status": "UNAUTHENTICATED"
}
}