#google-signin
Вопрос:
Я хочу добавить «Вход в Google» в качестве альтернативы созданию учетной записи при регистрации на наши услуги.
Я хочу, чтобы процесс извлек адрес электронной почты и имя пользователя. Это оно.
И этот пример был всем, что мне было нужно
https://developers.google.com/identity/sign-in/web
Отлично сработало. Очень похоже на вход в Facebook, который я добавил на прошлой неделе.
Но теперь я читаю, что он не будет поддерживаться после марта 2023 года.
Используя код JS, предназначенный для мусорной корзины, я могу получить полезную информацию об учетной записи, с помощью которой я выполняю вход.
УДОСТОВЕРЕНИЕ личности: 10855600*******690837;Фрэнк;Харт;фрэнк.харт**** * @gmail.com
Параметр, передаваемый функции обратного вызова, имеет метод getBasicProfile (), который выполняет эту работу
профиль var = googleUser.getBasicProfile();
Но, используя новый код, я обнаружил (методом проб и ошибок), что параметр, передаваемый функции обратного вызова, является объектом, который имеет три поля, единственное потенциально полезное, называемое учетными данными, с таким содержимым, как:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjQ2Mjk0OTE3NGYxZWVkZjRmOWY5NDM0ODc3YmU0ODNiMzI0MTQwZjUiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJuYmYiOjE2Mjg4NTQzOTcsImF1ZCI6IjY1MjE0Nzk1NjY0My05aWVmdHN2bmZraDVma2x1NHUxOGg1Ymc3MDA0YjdsOC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjEwODU1NjAwNDY3OTg0NzY5MDgzNyIsImVtYWlsIjoiZnJhbmsuaGFydDA0N0BnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXpwIjoiNjUyMTQ3OTU2NjQzLTlpZWZ0c3ZuZmtoNWZrbHU0dTE4aDViZzcwMDRiN2w4LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwibmFtZSI6IkZyYW5rIEhhcnQiLCJwaWN0dXJlIjoiaHR0
Теперь я предполагаю, что я должен отправить эту строку на свой сервер и что-то с ней сделать, возможно, с «секретом клиента», который связан с приложением на developers.google.com. Но я искал большую часть дня и не уверен, что то, что я нашел, необходимо — надеюсь, это не так
https://developers.google.com/identity/sign-in/web/backend-auth
Нужно ли мне теперь стать программистом OAuth2, чтобы просто добавить вход с помощью кнопки Google?
Ответ №1:
Хорошей новостью является то, что вам не нужно изучать OAuth2, вам не нужно следовать руководству по бэкенд-аутентификации, указанному в вашем вопросе. Эта миграция фактически устраняет сложность OAuth2, маркеров доступа и обновления при входе в систему. Да, существует трудность в изучении и понимании нового и отличного способа безопасного обмена профилем пользователя. Надеюсь, преодолев кривую обучения, вы увидите, как это упрощает работу с профилем.
Веб-токены JSON (JWTs) теперь используются для безопасного обмена профилем учетной записи Google.
Эта большая куча текста-учетные данные, это кодировка base-64 и JWT. jwt.io имеет онлайн-декодер JWT, который удобен для тестирования и приятной записи работы с JWTS. После декодирования это просто объект JSON, методы get не требуются, просто доступ к отдельным полям.
Все это говорит о том, что вам нужно решить, должно ли декодирование происходить в браузере пользователя или на вашем внутреннем сервере. Это зависит от того, как вы работаете с профилем и вашей настройкой. Как правило, вы декодируете на своем сервере после перенаправления с помощью data-login_uri в HTML или login_uri в JS.
Существует большое количество доступных библиотек декодирования JWT, поэтому весьма вероятно, что вы сможете добавить библиотеку JWT, декодировать ее, и все вы будете готовы получить доступ к отдельным полям в учетных данных.
Комментарии:
1. ты только что устроил мне выходные, друг!
2. как только пользователь войдет, я расшифрую учетные данные на серверной части, как серверная часть узнает, что пользователь вошел и может получить доступ к ограниченным конечным точкам? Нужно ли мне создавать свой собственный токен доступа и обновления? Спасибо!