14

因此,肯定有很多关于如何将各种个人社交网络身份验证/注册集成到现有用户帐户的教程。但是我似乎找不到太多信息的情况是,如果用户使用不同的社交网络凭据登录您的帐户。例如:

场景#1
用户使用站点的身份验证在站点上注册。
然后用户使用 Facebook Connect 在网站上登录/注册。
然后用户使用 Twitter 在网站上登录/注册。

如何将所有这些集成到一个帐户中?

显然,一旦用户注册,他们可以在帐户设置页面中添加其他社交网络关联。但我更担心他们是否通过其他社交网络注册而不记得他们已经设置。

我的一般想法是试图找出一种方法来使用“用户名”或电子邮件来尝试猜测并向用户展示一种在此处组合帐户的方法。

有人有什么想法吗?

4

2 回答 2

4

跟进——

如果您的用户不记得他们以前注册过,那么祝他们好运;)

正如您所描述的那样,我计划让用户在通过一种或另一种方式登录后可以选择链接其他帐户。

但就交叉检查而言,你能做的只有这么多。许多社交网络 API 确实提供了电子邮件地址(一旦您通过 OAuth 闯入),但只有当用户选择公开他/她的地址时,才能访问这些地址,这并不能保证。

同样不能保证用户为每个社交网络帐户使用相同的电子邮件地址,因此即使您设法检索到一个地址,它也可能对您有用或没有任何用处。

最后,如果您通过这种方式找到匹配的电子邮件地址,建议提示用户链接帐户,而不是假设他/她希望自动完成此操作。有些人喜欢保持多重人格。即“看起来你也注册了 twitter - 你想链接你的帐户吗?它会让你的生活看起来值得过。”

您可能会考虑提供奖励以链接用户帐户或提供电子邮件地址(当然,这取决于您根据您网站的功能确定这些可能是什么)。

我正在研究的数据库方面的解决方案是维护多个帐户,然后如果通过各种方式发现链接信息,则在查找表中指示所述链接。另一种方法是,一旦您找到一个链接,尝试将多个帐户的所有相关条目合并到一个帐户实体中 - 关于后一种方法,我只能说我会谨慎行事,因为可能存在相当高的复杂性,具体取决于关于用户的活动级别和数据库模式的复杂性。

在我的(心理/实际)命名空间中,以老式方式注册的用户拥有一个“标准”帐户,而使用社交网络的用户拥有一个“别名”帐户。然后目标变成定义别名应该指向的位置,即创建查找,以便通过任一方式的后续登录检索两个帐户的相关信息(优先显示“标准”帐户的个人数据)。

顺便说一句,自从我上一篇文章以来,我想出了如何使 twitter OAuth 正常运行 - 如果您有兴趣,可以查看我的其他答案以获取详细信息。

JB

嗨,马特,

我现在正在解决同样的问题。

假设用户从常规站点帐户开始(如果他看到所有漂亮的“与 XXX 网络连接”按钮,这不一定 是安全的假设!!!),您可以使用 OAuth 或 javascript API(facebookConnect 或 @anywhere - Haven '还没有完全弄清楚后者,我不确定我是否推荐它,因为我认为它没有提供像后端库那样丰富的 API)来登录其他站点。

从社交网络成功登录/重定向后,API 应返回某些信息 - 例如用户 ID 和访问令牌,然后您可以将其以某种身份存储在数据库中,将您的“实际”应用程序用户与社交网络的 ID 相关联网络。

当用户返回该站点时,您可以

1 验证社交网络服务设置的 cookie(各种方案通常验证签名,基于您的应用程序数据的 sha1 或 md5 哈希 - 我的意思是您在使用 twitter/facebook 注册应用程序时获得的数据,通常是消费者密钥、应用程序 ID 等 - 使用接收到的 cookie),以便您知道用户已使用社交网络登录

2 如上所述找到您的数据库条目关联

3基于 facebook/twitter 连接是安全的假设 手动登录您的用户。

警告:这仅与您的实现一样安全(或与 facebook/twitter 的实现一样安全,如果您愿意的话......)

尽管 twitter 的 OAuth 目前似乎不能正常工作,但他们对该过程的一般描述非常有用: http ://dev.twitter.com/pages/auth

祝你好运。

Ĵ

于 2010-07-08T12:39:30.110 回答
1

我一直在考虑将 FB auth 添加到我们的应用程序中,但我们知道我们的回头用户可能会单击它并完成新项目的结帐,然后惊讶地发现他们没有看到任何现有订单。为了解决这个问题,当用户点击“使用 Facebook 登录”项目时,我们使用该点击来触发带有两个选项的下拉菜单:

小样

[用 Facebook 登录]
[创建新帐户]
[我有一个帐户]

如果用户点击“我有一个帐户”,我们会将他们发送到 FB auth 并将电子邮件从 FB 返回到我们的应用程序。我们将该电子邮件与我们现有的用户进行比较。如果匹配,我们将 FB 信用添加给用户。如果不匹配,我们会发出警报:

您在 FB 的电子邮件与我们的任何帐户都不匹配。要登录您现有的帐户,请使用下面的电子邮件登录,或更新您 Facebook 帐户中的电子邮件

这允许用户创建一个全新的帐户,如果他们想将它们分开,而不需要新的电子邮件服务。虽然这是一个边缘案例,但它是一个功能。

于 2014-04-03T02:31:54.380 回答