我对OAuth2.0进程有一些疑问。
我想实现Stack Log with google account
功能。
我正在使用Google的PHP库。
我正在检索刷新令牌和访问令牌。
到目前为止,我的问题是:当用户从我的网站退出并再次点击该按钮时,我该如何知道用户从DB检索到哪个正确的刷新令牌?
我考虑过将电子邮件保存在cookie中,但StackOverflow似乎没有这样做,因为我清除了我的cookie,但是当我点击按钮而不显示“应用程序范围授权”谷歌页面时,Stack继续连接我。
我错过了什么吗? 是否有API允许用户在没有令牌的情况下收到电子邮件? 也许RefreshToken只能用于您认识用户的移动APP?
我想要实现的目标相对简单,用户点击登录,首次必须批准该应用程序。完成后,我想在点击登录按钮时自动连接用户。
感谢有关该
的任何信息答案 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端点获取用户电子邮件地址,则可以迁移您的应用获取电子邮件地址的方式。
答案 3 :(得分:0)
您需要做的是设置具有唯一ID的持久性cookie,并在数据库中创建一个条目,将该ID与登录用户相关联。
显然,当用户首次使用OAuth登录您的网站时,您需要在数据库中创建用户的记录。
您还需要重定向到正确的Google OAuth端点以检索脱机用户的令牌,否则令牌将过期,并且在一段时间后无法自动续订。
我已准确撰写了一篇关于getting Google OAuth tokens的文章以供离线使用,并且只要您愿意,它们就可以保持有效和可更新。本文是关于我用所有代码编写的类,包括在数据库中存储标记。