首页 > 解决方案 > 社交 oauth 如何真正发挥作用?

问题描述

我对社交 oauth 的工作方式感到困惑?可以说我已经在我的项目中实现了社交 oauth 登录。

用户 A 在我的网站上注册了 Google Oauth。我以某种方式将使用 GOOGLE 注册按钮放在我的注册页面中,然后用户将单击它并被定向到谷歌将要求授权我的应用程序的链接。如果用户 A 允许,那么 google 服务器首先会向我的服务器发送什么信息。它会发送一些东西,这样我就可以将它保存在我的服务器中,以知道用户 A 已经注册,并且可以给用户 A 一个 id 以将其链接到我的服务器中我的数据库的其他表(与谷歌无关服务器)。所以真正的问题是当新用户注册和现有用户再次登录时,谷歌(或任何其他服务提供商,如 facebook、twitter 等)会向我发送什么。如果用户(已经注册)再次尝试注册会发生什么?还是登录时没有再次授权网站?

如果您想要更详细的问题,请发表评论,我会详细说明。

标签: oauthfacebook-logingoogle-signintwitter-login

解决方案


好的,首先让我们使用与社交登录不同的术语。让我们称之为第三方登录,这就是为什么。

您的应用程序有自己的登录系统,用户可以通过添加电子邮件地址并创建登录名和密码在您的系统上创建他们的帐户。现在您要添加第三方登录,即 Facebook、google 和 twitter 登录。这些实际上是第三方登录。

您实际上要做的是将用户第三方社交媒体帐户与您的登录系统相关联。经常用于此的术语称为帐户链接。

假设用户 A 已经在您的系统中创建了一个帐户,现在 A 有一个 Facebook 帐户,因此他们希望将他们的 Facebook 帐户与您的登录系统相关联。因此,您创建了一个 Facebook 登录按钮 Facebook 将返回给您一个 id,这通常是 facebooks 系统上用户的 id。因此,当用户使用 Facebook 登录时,您会获取 Facebook id,您可以将其存储在系统中的用户帐户中。

如果用户 B 想使用 Google 登录您的系统,而 B 在登录时尚未在您的系统中拥有帐户,那么事情会变得更加混乱,那么您可能会获得用户 ID,我认为您也会获得他们的电子邮件地址所以你可以使用谷歌的电子邮件地址,这样你就可以在你的系统上为他们创建一个实际的帐户,并直接将谷歌登录自动链接到它。

我已经有一段时间没有这样做了,但我相信您会从第三方提供商那里获得用户 ID 和返回给您的电子邮件,您可能想检查一下是否记忆服务它们并不完全相同,您可能需要制作一个在您取回 id 后请求获取电子邮件地址。


推荐阅读