繁体   English   中英

社交登录整合

[英]Social login integration

我需要将社交登录名添加到已经有一个非常简单的用户系统的站点,它仅存储电子邮件和密码,仅此而已。 我需要添加facebook和twitter登录选项,但是我很难弄清楚如何将其与当前系统集成,因为它在email具有唯一索引,因此当用户尝试使用社交帐户登录时,我首先会获取其详细信息并检查该电子邮件是否已经注册,如果没有注册,那么我将自动注册它们,然后将其登录,随后的登录请求将找到该电子邮件并自动登录用户。

问题出在用户通过普通注册表格注册后,然后我可以使用给定的电子邮件创建一个虚假的社交媒体帐户,然后仅由于他们没有社交媒体帐户就可以登录该网站上的用户帐户使用该电子邮件。

我想我可以添加一列“ regMethod”,以指示使用了哪种注册方法,并使其成为一个复杂的唯一键(email, regMethod) ,并使其本机格式为0 ,facebook为1 ,twitter为2并在登录用户时进行比较但这对我来说似乎很客气。 同样,如果单个用户出于某种原因使用所有登录方法,则会有许多帐户,而不仅仅是一个帐户,这是一个问题。

我敢肯定,必须针对该问题找到更好的解决方案,并且已经有人解决了这个问题,所以我觉得我将重新发明轮子以解决该问题。 现实中该如何完成?

我一直在使用一个允许不同类型的登录(本地或使用Facebook帐户)的网站来解决您的问题,一个简单的解决方案是通过为用户帐户数据提供单独的表,从而将用户帐户数据与身份验证数据分开。

首先,我有一个用于用户数据的表。 然后,您将具有两个用于进行身份验证的表,一个LocalAuthentication包含与本地身份验证方法相关的任何内容,例如盐,密码哈希等。然后,您还将拥有FacebookAuthentication表,并且只需要包含一个Facebook访问令牌。 这两个表都需要引用UserTable。

这样,单个用户可以对同一帐户进行多次身份验证。

只需将facebook_idtwitter_id添加到您的用户表即可。 然后,您将有两个选择:

  1. 每个社交帐户都是一个新帐户(不合并),您只需创建并保留一个新的用户对象。

  2. 登录后(经典方式:login / pwd),您可以为用户提供将其帐户与社交帐户关联的功能。 在这种情况下,您必须更新用户表。

当用户使用API​​时,请不要忘记存储您将获得的facebook_idtwitter_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM