2014-01-22 2 views
6

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

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

Я в порядке получаю токен обновления и токен доступа.

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

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

Я что-то упустил? Есть ли API, позволяющий получать электронную почту пользователя без токена? Возможно, RefreshToken может использоваться только с Mobile APP, где вы знаете пользователя?

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

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

ответ

2

https://developers.google.com/accounts/docs/OAuth2Login описывает только как достичь входа в использовании Google/oauth2.

+0

Ну да, я уже прочитал много документов, включая этот. Я возьму второй взгляд, спасибо за указание. –

+0

Я дам вам щедрость, так как вы первый, кто ответил, и я не уверен в других ответах. Из всего моего чтения ответ, который я ожидал, это: «Вам действительно не нужен токен Refresh для Веб-сайта, если вам не нужны данные от пользователя, когда вы не вошли на ваш сайт» –

+0

Не заметил ваш ответ в папке «Входящие» какое-то время. Это правда, что вам не нужен refresh_token. До тех пор, пока пользователь будет подключен к Google, вам нужно только периодически обновлять access_token с помощью невидимого i-кадра. Использование response_type = токена вместо кода вернет access_tokens в фрагменте URL-адреса, и вы можете надежно выполнить эту операцию в фоновом режиме, добавив display = none в URL-адрес. Самый простой способ сделать эту работу - использовать виджет входа в систему G +. Он работает для всех пользователей Google/Google Apps, даже без аккаунтов Google+. См. Https://developers.google.com/+/ – breno

0

Выберите эту процедуру, если вы предпочитаете просто обновлять свою реализацию входа в систему 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/auth-migration#email

1

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

0

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

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

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

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

Смежные вопросы