因此,关于如何将各种个人社交网络身份验证/注册集成到现有用户帐户中,肯定有很多教程。但我似乎无法找到很多信息的情况是用户是否使用不同的社交网络凭据登录您的帐户。例如:
情景#1
用户使用网站身份验证在网站上注册。
用户然后使用Facebook Connect登录/注册。
用户然后使用Twitter在网站上登录/注册。
如何将所有这些整合到一个帐户中?
显然,一旦用户注册,他们就可以在帐户设置页面中添加其他社交网络关联。但我更担心的是,如果他们通过其他社交网络注册而不记得他们已经设置好了。
我的一般想法是试图找出一种方法来使用“用户名”或电子邮件来尝试猜测并向用户提供一种在那里合并帐户的方法。
有人有任何想法吗?
答案 0 :(得分:4)
跟进 -
如果您的用户不记得他们之前已经注册过,那么一般来说,祝他们好运;)
正如您所描述的那样,我计划在用户通过某种方式登录后为用户提供链接其他帐户的选项。
但就交叉检查而言,只有你可以做的事情。许多社交网络API确实提供了电子邮件地址(一旦你通过OAuth被破坏),但只有当用户选择将他/她的地址公开时才可以访问这些地址,但这是无法保证的。
也不保证用户是否为每个社交网络帐户使用了SAME电子邮件地址,因此即使您设法检索地址,也可能对您有任何用处。
最后,如果您通过这种方式找到匹配的电子邮件地址,建议用户提示链接帐户,而不是假设他/她希望自动完成此操作。有些人喜欢保持多重性格。即“看起来你也注册了推特 - 你想要关联你的账户吗?它会让你的生活变得有价值。”
您可以考虑提供激励措施来链接用户帐户或提供电子邮件地址(当然,根据您网站的功能,可以根据您的具体情况确定这些内容)。
我在数据库端工作的解决方案是维护多个帐户,然后如果通过各种方式发现链接信息,则在查找表中指示所述链接。 另一种方法是,一旦找到链接,尝试将多个帐户的所有相关条目合并到一个帐户实体中 - 我可以说后一种方法是我会谨慎行事,因为可能存在难以置信的复杂程度关于用户的活动级别和数据库架构的复杂性。在我的(心理/实际)命名空间中,注册旧式方式的用户具有“标准”帐户,而使用社交网络的用户具有“别名”帐户。那么目标就是定义别名应指向的位置,即创建查找,以便通过 进行后续登录意味着检索两个帐户的相关信息(使用优先显示“标准”帐户的个人数据。
顺便说一下,我发现自从上一篇文章以来如何让Twitter OAuth表现出来 - 如果您有兴趣,可以查看我的其他答案。
JB
hi matt,
我正在解决同样的问题 现在。
假设用户以常规方式开始 网站帐户(不 如果他看到,必然是安全的 所有漂亮的“与XXX连接 网络“按钮!!!),你可以使用 OAuth或javascript API (facebookConnect或@anywhere - 还没有完全弄清楚后者 然而,我不确定我是否推荐它 我不认为它提供了丰富的 API和后端库一样) 登录其他网站。
API应该返回一定的 成功后的信息 从社交网络登录/重定向 - 例如用户ID和ACCESS TOKEN,您可以将其存储在您的 某个容量关联的数据库 你的'实际'应用程序用户 社交网络的ID。
当用户返回网站时,你 然后可以
1验证社交网站设置的Cookie 网络服务(各种方案 通常基于验证签名 你的sha1或md5哈希 应用数据 - 我的意思是 注册时获得的数据 应用程序与twitter / facebook,通常是 消费者密钥,应用程序ID等 - 收到的cookies)所以你知道 用户已登录社交 网络
2找到您的数据库条目关联 如上所述
3根据您的用户手动登录 facebook / twitter的假设 连接是安全的。
告诫:这只是和你的一样安全 实施(或安全 facebook / twitter的实现,如果 你更喜欢...) 虽然twitter的OAuth没有 目前似乎工作得很好, 他们的一般描述 过程非常有用: http://dev.twitter.com/pages/auth 祝你好运。Ĵ
答案 1 :(得分:1)
我一直在考虑将FB auth添加到我们的应用程序中,但我们知道我们的返回用户可能会点击它并完成新项目的结帐,然后会惊讶地看不到他们现有的任何订单。要解决此问题,当用户点击“使用Facebook登录”项时,我们使用该点击来触发下拉菜单,其中包含两个选项:
[使用Facebook登录]
[创建新帐户]
[我有一个帐户]
如果用户点击“我有一个帐户”,我们会将其发送给FB身份验证并将FB中的电子邮件返回给我们的应用。我们将该电子邮件与现有用户进行比较。如果我们匹配,我们将FB信用添加到用户。如果不匹配,我们会发出提醒:
您与FB的电子邮件与我们的任何帐户都不匹配。要登录您现有的帐户,请使用下面的电子邮件登录,或者更新您的Facebook帐户中的电子邮件
这允许用户创建一个全新的帐户,如果他们想要将它们分开,而不需要新的电子邮件服务。虽然这是一个边缘情况,但它是一个功能。