首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当同一个用户跨提供者有多个帐户时,我如何在我的网站上使用X登录?

问当同一个用户跨提供者有多个帐户时,我如何在我的网站上使用X登录?
EN

Stack Overflow用户
提问于 2017-08-15 20:41:30
回答 1查看 34关注 0票数 0

如果我有一个可以与多个不同的提供商(比如Facebook、GitHub、Google)登录的网站,我应该使用什么作为用户本地到我的站点的唯一标识符?例如,如果发生了这两个步骤:

  1. 我第一次在GitHub注册,我的用户名是mogronalol,电子邮件是mogronalol@mogronalol.com。
  2. 创建了一个本地到我的站点重音,其电子邮件地址为mogronalol@mogronalol.com,用户名为mogronalol。

如果我使用电子邮件地址作为本地唯一标识符,如果我的电子邮件地址在GitHub中更改为other@other.com会发生什么?同样的问题也适用于更改用户名。

如果我从GitHub获得了某种唯一的ID,并使用它作为标识符,那么如果我的电子邮件地址或用户名在GitHub中发生了变化,我该怎么办?我是否只是在每次登录时更新本地到我的站点副本,使其与GitHub上的副本相同?

当然,如果我想登录我的Facebook帐户以及我的GitHub帐户,这个问题会更加严重。如果我的电子邮件地址和/或用户名在这两种情况下是不同的,会发生什么?我的本地网站如何知道如何将账户连接在一起?如果电子邮件地址是不同的,一旦帐户被连接,我应该使用哪一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-15 22:23:11

首先,也许您可以尝试一些教程来体验OAuth的工作方式。

在您的OAuth身份验证成功后,您的网站将收到OAuth提供者提供的一系列信息.示例

在这些信息中,有两个名为uid和provider的特殊列,用于从OAuth提供程序中识别用户。

您将使用这两列来判断身份验证来自哪个提供者(即facebook或github),还需要将这些字段保存到您的帐户列中。

然后使用其余的信息在您的网站上创建帐户。

例如,使用OAuth提供者的电子邮件作为email(github的电子邮件作为电子邮件)。

创建帐户后,每次从OAuth提供程序登录服务器时。

您只需要在account列中检查provider和uid。

让我们回到你的问题。

如果我使用电子邮件地址作为本地唯一标识符,如果我的电子邮件地址在GitHub中更改为other@other.com会发生什么?同样的问题也适用于更改用户名。 如果我从GitHub获得了某种唯一的ID,并使用它作为标识符,那么如果我的电子邮件地址或用户名在GitHub中发生了变化,我该怎么办?我是否只是在每次登录时更新本地到我的站点副本,使其与GitHub上的副本相同?

Github的电子邮件或用户更改不会影响您的登录(我们只检查provider和uid字段来登录用户)。

我建议不要与OAuth提供程序的信息同步(我们只在创建帐户时使用OAuth提供程序的信息)。

如果要支持多个OAuth提供程序,我建议您阅读这篇文章。

您必须将uid和provider分离到另一个称为identity的表中。

每个帐户都有许多身份。

我以前也这么做过。

如果您不介意的话,这里是处理多个OAuth提供程序的示例代码片段。

您必须考虑登录流中的逻辑。

例如,用户已登录并使用OAuth =>链接提供程序登录OAuth链接帐户。

用户未登录并登录OAuth =>,如果找到带有OAuth的用户,则登录,否则使用OAuth提供程序的信息创建帐户

当然,如果我想登录我的Facebook帐户以及我的GitHub帐户,这个问题会更加严重。如果我的电子邮件地址和/或用户名在这两种情况下是不同的,会发生什么?我的本地网站如何知道如何将账户连接在一起?如果电子邮件地址是不同的,一旦帐户被连接,我应该使用哪一个?

当用户已经登录时,我们只链接帐户。

链接帐户时,可以确定使用OAuth提供程序的信息更新帐户(就像以前注册帐户一样)。

我建议使用原始电子邮件,不要从OAuth供应商的信息更新它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45701216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档