社交登录重复帐户冲突

social login duplicate accounts conflict

我正在制作一个新的应用程序,除了常规 email/password 注册之外,还需要进行多次社交注册,但是有一种特殊情况可能会导致数据完整性问题...


示例:

  1. 一个用户注册了 facebook 但没有返回电子邮件。
  2. 我在数据库中创建了一个电子邮件和密码设置为空的用户,以及一个包含他的 ID、令牌和提供商名称的社交资料条目。
  3. 然后用户下次使用电子邮件和密码注册,所以我在用户 table 中为他创建一个新记录。

现在他有同一个人的 2 个条目。

我该如何处理?

电子邮件是此处识别用户的唯一方式,因此处理此问题的最简单方法是强制用户提供他的电子邮件(如果它未在 Facebook 的响应中返回)。 您可以轻松地执行此检查并相应地重定向用户(到不同的 View/page)以输入他的电子邮件,甚至要求用户添加一些额外的可选字段。希望这有帮助

通常如果电子邮件为空,因为用户使用其他东西是 facebook 登录(例如 phone 号码)

如果 属性 电子邮件为空,您可以回退到错误消息,或者使用 public_profile id 设置 FacebookId 并要求用户将电子邮件地址放入您的应用程序。

不要使用电子邮件作为主键 ;) 并且不要忘记,为所有用户设置一个内部 login/password。 Facebook Twitter 只是另一种登录方式,而不是主要机制。