Я использую omniauth на стороне клиента для подключения к учетной записи Google. Все работает хорошо, я могу получить id_token и некоторую дополнительную информацию, такую как электронная почта, имя, family_name, named_name и т. д.
Вот как я настроил провайдера в app/config/initializer/omniauth.rb:
provider :google_oauth2, ENV['GOOGLE_ID'], ENV['GOOGLE_SECRET'], scope: "profile,email"
Затем, в качестве теста, чтобы проверить подлинность id_token, с помощью Postman я отправляю запрос POST, такой как:
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=x
замена x на id_token, который я получил на своем клиенте
Я получаю правильный ответ, например:
{
"iss": "accounts.google.com",
"at_hash": "xxx-xxx",
"aud": "xxx-xxx.apps.googleusercontent.com",
"sub": "xxx",
"email_verified": "true",
"azp": "xxx-xxx.apps.googleusercontent.com",
"email": "[email protected]",
"iat": "xxx",
"exp": "xxx",
"alg": "xxx",
"kid": "xxx"
}
Когда я подключился к своему клиенту, я разрешил приложению доступ к информации моего профиля и моей электронной почте, и я следовал этому уроку:
https://developers.google.com/identity/sign-in/web/backend-auth
кто говорит :
// These seven fields are only included when the user has granted the "profile" and
// "email" OAuth scopes to the application.
"email": "[email protected]",
"email_verified": "true",
"name" : "Test User",
"picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
"given_name": "Test",
"family_name": "User",
"locale": "en"
Я не могу понять, почему я не могу получить 5 последних полей
Я работаю над API, и я хотел бы, чтобы мой API мог сам заполнить модель пользователя, только получив id_token. Я могу получить эту информацию на стороне клиента, но я думаю, что это не работа клиента по отправке этой дополнительной информации в мой API, верно?