0

所以在过去的几天里,我一直在为我的网站实施 Facebook 和 Google OAuth 2 社交登录。

一切都很好,基本上:

  • 当用户登录他们的电子邮件地址时,将与数据库上已有的内容进行比较
  • 如果电子邮件存在,则社交登录将附加到该现有电子邮件,并且用户登录到他们现有的帐户
  • 否则创建一个新帐户。(就像我注意到它在这里工作一样)

但棘手的部分来了。谷歌可以有两个域的电子邮件:

  • gmail.com
  • googlemail.com

如果 Facebook 帐户是在googlemail.comGoogle 帐户中创建的(使用gmail)将不会链接。现在我已经通过检查两者的数据库解决了谷歌与 Facebook 的关系,gmail.com但是googlemail.com如果它被反转并且 Facebook 是找不到地址的人,问题就来了。

我以为我可以将gmail.comand googlemail.comcheck 添加到 facebook 登录功能以检查 unqiue 电子邮件地址,但我想知道这是否会导致我无法预见的问题。

我的一些想法是:

  • 未来与其他 API 的兼容性等
  • 复杂
  • 安全?(我通过使用 verifiedFacebook API 中的标志来解决这个问题)
  • 其他电子邮件提供商可能在指向同一帐户的双电子邮件域方面存在相同问题(也许我必须编写一个庞大的无法维护的列表?)。

所以问题是:添加一个 DB 子句来查找我gmail.comgooglemail.comFacebook 登录功能是一个坏主意吗?

我应该假设gmail.com并且googlemail.com是两个独立的帐户吗?

谢谢你的想法,

4

2 回答 2

1

您可以尝试将所有“googlemail.com”字符串转换为“gmail.com”。这个概念是如果系统找到 googlemail,将其转换为 gmail。

示例:用户输入 test@googlemail.com

算法将是:

email = "test@googlemail.com"
replace("@googlemail.com","@gmail.com",email )
authenticate(email);
于 2012-07-25T19:23:49.170 回答
0

我决定通过搜索两者来实际解决这个问题googlemail.comgmail.com当用户使用 Facebook 或 Google 登录时,与电子邮件地址相关的域和域来实际解决这个问题。

这似乎工作得很好,比规范化和潜在地改变用户信息来解决这个问题要好。

于 2012-07-30T13:38:04.890 回答