Google OAuth自动登录

时间:2014-01-22 21:31:12

标签: php oauth-2.0 google-oauth

我对OAuth2.0进程有一些疑问。 我想实现Stack Log with google account功能。

我正在使用Google的PHP库。

我正在检索刷新令牌和访问令牌。

到目前为止,我的问题是:当用户从我的网站退出并再次点击该按钮时,我该如何知道用户从DB检索到哪个正确的刷新令牌?

我考虑过将电子邮件保存在cookie中,但StackOverflow似乎没有这样做,因为我清除了我的cookie,但是当我点击按钮而不显示“应用程序范围授权”谷歌页面时,Stack继续连接我。

我错过了什么吗? 是否有API允许用户在没有令牌的情况下收到电子邮件? 也许RefreshToken只能用于您认识用户的移动APP?

我想要实现的目标相对简单,用户点击登录,首次必须批准该应用程序。完成后,我想在点击登录按钮时自动连接用户。

感谢有关该

的任何信息

4 个答案:

答案 0 :(得分:2)

https://developers.google.com/accounts/docs/OAuth2Login介绍了如何使用Google / OAuth2实现登录。

答案 1 :(得分:1)

当用户第一次点击登录按钮并输入登录详细信息时,OAuth会返回所有用户数据,包括电子邮件和Google ID。因此,您可以使用电子邮件将谷歌ID存储在数据库中。此外,当用户注销并再次单击登录按钮时,OAuth会再次检索数据。因此,您可以使用您的数据库中存在的Google ID来检查OAuth检索到的Google ID。

答案 2 :(得分:0)

如果您只想更新OAuth 2.0登录(OpenID Connect)实施,请选择此过程。

更改端点:您可以使用以下HTTP请求路径将peopleinfo端点替换为people.get端点: https://www.googleapis.com/plus/v1/people/me 如果您需要OpenID Connect格式,请使用以下HTTP请求路径将userinfo端点替换为people.getOpenIdConnect端点: 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

答案 3 :(得分:0)

您需要做的是设置具有唯一ID的持久性cookie,并在数据库中创建一个条目,将该ID与登录用户相关联。

显然,当用户首次使用OAuth登录您的网站时,您需要在数据库中创建用户的记录。

您还需要重定向到正确的Google OAuth端点以检索脱机用户的令牌,否则令牌将过期,并且在一段时间后无法自动续订。

我已准确撰写了一篇关于getting Google OAuth tokens的文章以供离线使用,并且只要您愿意,它们就可以保持有效和可更新。本文是关于我用所有代码编写的类,包括在数据库中存储标记。