我有一些关于 OAuth2.0 流程的问题。 我想实现类似 Stack
Log with google account
功能。
我正在使用 Google 的 PHP 库。
我可以检索刷新令牌和访问令牌。
到目前为止一切顺利,我的问题是:当用户从我的网站注销并再次单击按钮时,我应该如何知道用户是谁从数据库检索正确的刷新令牌?
我考虑过将电子邮件保存在 cookie 中,但 StackOverflow 似乎没有这样做,因为我清除了 cookie,但当我单击按钮时 Stack 继续连接我,而不显示“应用程序范围授权”google 页面。
我错过了什么吗? 是否有API允许在没有令牌的情况下获取用户电子邮件? 也许 RefreshToken 应该只用于您认识用户的移动应用程序?
我想要实现的功能比较简单,用户点击登录,第一次就必须批准申请。完成后,我想在单击登录按钮时自动连接用户。
感谢您提供任何相关信息
https://developers.google.com/accounts/docs/OAuth2Login描述了如何使用Google/OAuth2实现登录。
当用户第一次单击登录按钮并输入登录详细信息时,OAuth 将返回所有用户数据,包括电子邮件和 Google ID。因此,您可以将 google ID 与电子邮件一起存储在数据库中。此外,当用户注销并再次单击登录按钮时,OAuth 会再次检索数据。因此,您可以使用数据库中存在的 google ID 检查 OAuth 检索到的 google ID。
更改端点:您可以使用以下 HTTP 请求路径将 userinfo 端点替换为 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#emailGoogle sign-in
能够被自己点击,像这样
。要实现此目的,您只需将属性
data-auto_select
添加到下面给出的代码片段中,并将其设置为 true
。
<div id="g_id_onload"
data-client_id="YOUR_GOOGLE_CLIENT_ID"
data-auto_select="true"
data-login_uri="https://your.domain/your_login_endpoint">
</div>