我一直在研究这个 Oauth 概念,但我仍然对这个概念感到非常困惑。我的主要问题之一是如何注册 google 帐户或 twitter 帐户。
例如,假设要注册到我的网站,您必须提供用户名/密码/电子邮件/组名。如果您通过我的网站注册,则可以非常轻松地提供这些字段。但是,假设用户想通过谷歌注册。这些字段将如何填充?
据我了解,一旦您使用您的谷歌凭据注册,您将被重定向到我网站上的一个页面,您可以在其中填写必填字段。我不确定这是否正确。谁能帮我更多地理解这一点?
基本上 OAuth 是这样工作的(取决于版本,这些点由多个步骤组成):
然后,您可以使用此访问令牌向提供者请求用户数据。通常,提供商会提供一个电话,您可以使用该电话询问用户的电子邮件地址、全名和(特定于提供商的)用户 ID,但这不是 OAuth 的一部分。
您现在如何使用这些信息来处理该用户,就好像他登录到您的网站一样,这完全取决于您自己。每次看到新的用户 id时,您可能都想在自己身边创建一个新的用户对象。
在理解如何使用 OAuth2 进行新用户注册之前,有几个基本概念需要弄清楚。这些是:
对于新用户注册,您将遵循客户端应用程序请求授权以访问资源的相同顺序。这将触发登录页面,用户登录,授权代码(由 IdP)创建并发送回客户端应用程序。客户端应用程序将此代码交换为访问令牌(涉及一些加密签名,请阅读文档 - 基本上允许客户端应用程序证明自己的身份)。
然后,此访问令牌用于请求对资源的访问 - 在本例中为新的用户配置文件。这可以是姓名、电子邮件、图片等。使用它在您的客户端应用程序配置文件数据库中创建一个新行。创建一个新的用户帐户。
然后对于后续登录,客户端应用程序将使用此访问令牌通过 Google Auth 服务器验证其生命周期 - 然后创建本地会话/cookie 以登录用户。
希望这很清楚。