如何为同一个用户处理多个openID

时间:2011-06-26 23:28:10

标签: php mysql login oauth openid

对于我的网站,我使用的登录系统与SO上的登录系统非常相似。用户可以使用他的Facebook,Google(Gmail openID),Twitter帐户登录。

这个问题与特定的oAuth或openID实现无关。

问题是如何知道同一用户是否使用不同的提供商登录。

让我举个例子:

Bobo 点击“使用Facebook登录”进入网站登录网站。因为这是他的第一次访问,我们为他创建了一个帐户。

稍后 Bobo 来到该网站。这次他点击“使用Google登录”。那么我怎么知道这是否是同一个人所以我可以将这个提供者添加到他的帐户而不是创建一个新的(和重复的)帐户。

我可以完全信任电子邮件吗?

处理此问题的最佳方法是什么。 SO怎么做的?

有什么想法吗?

修改 的 如果我信任电子邮件,那么不同用户可能会使用同一封电子邮件吗?这可能是一个安全问题吗?

3 个答案:

答案 0 :(得分:1)

我认为除非用户明确说明它是Bobo,否则你无法真正了解这一点。他的FB和Google OpenID身份可能有完全不同的信息(我的也是如此)。只有波波知道这些属于同一个人。

在SO上查看它是如何完成的:您使用OpenID登录,然后您可以将另一个OpenID链接到您的帐户。提示您的用户也这样做。在登录过程中提供足够大的“我已经有一个帐户”按钮。

答案 1 :(得分:0)

除非两个帐户都提供相同的电子邮件地址,否则您将无法可靠地确定它们都是同一个用户。

如果您希望用户能够使用多个oAuth / OpenID帐户登录,您可以提供一种机制,允许用户从其用户帐户添加其他身份验证。

答案 2 :(得分:0)

转到您在此网站上的个人资料,在您的详细信息上方,您将看到2个链接:编辑|添加openid

通常,您将拥有1个用户= 1个登录详细信息(登录/密码与其余信息一起存储)。在这种多ID情况下,您必须单独存储登录详细信息(1个用户可能具有多个登录ID)。数据库表之间简单的一对多关系。