Автоматический вход в систему Google OAuth


У меня есть несколько вопросов о процессе OAuth2.0. Я хотел бы добиться чего-то вроде функции стека Log with google account.

Я использую библиотеку PHP от Google.

Я в порядке, извлекая маркер обновления и маркер доступа.

Пока все хорошо, мой вопрос таков: когда пользователь выйдет с моего веб-сайта и снова нажмет кнопку, как я должен узнать, кто этот пользователь, чтобы получить из БД правильный токен обновления?

Я подумал о том, чтобы сохранить электронное письмо в файле cookie но StackOverflow, похоже, не делает этого, так как я очистил свои файлы cookie, но стек продолжает подключать меня, когда я нажимаю кнопку, не показывая страницу Google "Авторизация области применения".

Я что-то упускаю? Существует ли API, позволяющий получать электронную почту пользователя без токена? Может быть, refreshToken следует использовать только с мобильным приложением, в котором вы знаете пользователя?

То, чего я хочу достичь, относительно просто: пользователь нажимает кнопку входа, в первый раз нужно утвердить приложение. Как только это будет сделано, я хотел бы автоматически подключить пользователя при нажатии кнопки входа.

Спасибо за любую информацию по этому поводу

Author: Michael Laffargue, 2014-01-23

4 answers

Https://developers.google.com/accounts/docs/OAuth2Login описывает, как выполнить вход с помощью Google/ OAuth2.

 2
Author: breno, 2014-01-27 02:23:07

Когда пользователь нажимает кнопку входа в систему в первый раз и вводит данные для входа, OAuth возвращает все данные пользователя, включая электронную почту и идентификатор Google. Таким образом, вы можете хранить идентификатор Google в базе данных вместе с электронной почтой. Также, когда пользователь выходит из системы и снова нажимает кнопку входа, OAuth снова извлекает данные. Таким образом, вы можете проверить идентификатор Google, полученный OAuth, с помощью идентификатора Google, присутствующего в вашей базе данных.

 1
Author: Snehal S, 2014-01-29 03:34:32

Выберите эту процедуру, если вы предпочитаете просто обновить реализацию входа в систему OAuth 2.0 (OpenID Connect).

Изменить конечную точку: Вы можете заменить конечную точку userinfo на конечную точку people.get, используя следующий путь HTTP-запроса: https://www.googleapis.com/plus/v1/people/me Если вместо этого вам нужен формат OpenID Connect, замените конечную точку userinfo конечной точкой people.getopenidconnect, используя следующий HTTP-запрос путь: https://www.googleapis.com/plus/v1/people/me/openIdConnect Изменить область действия: Если ваше приложение в настоящее время использует https://www.googleapis.com/auth/userinfo.profile область, вы можете переключиться на область профиля. Ваше приложение получает ту же информацию о профиле, что и раньше, поэтому вашим пользователям не потребуется повторно давать согласие.

Перенос способа получения вашим приложением адресов электронной почты: Если вы используете конечную точку userinfo для получения адресов электронной почты пользователей, вы можете перенести способ получения электронной почты вашим приложением адреса.

Https://developers.google.com /+/api/аутентификация-миграция#электронная почта

 0
Author: Shivam, 2014-01-28 07:12:21

Что вам нужно сделать, так это настроить постоянный файл cookie с уникальным идентификатором и создать запись в вашей базе данных, которая свяжет этот идентификатор с зарегистрированным пользователем.

Очевидно, что при первом входе пользователя на ваш сайт с помощью OAuth вам необходимо создать запись пользователя в вашей базе данных.

Вам также необходимо перенаправить на нужную конечную точку Google OAuth, чтобы получить токен для автономных пользователей, иначе срок действия токена истечет, и его нельзя будет автоматически обновить после пока.

Я написал статью именно об этом получении токенов Google OAuth для автономного использования и сохраняйте их действительными и возобновляемыми столько, сколько вы хотите. Эта статья посвящена классу, который я написал со всем кодом для этого, включая хранение токенов в базе данных.

 0
Author: mlemos, 2014-01-30 05:09:03