2012-07-25 44 views
0

所以在过去的几天我一直贯彻Facebook和谷歌的OAuth 2社会登录我的网站的。电子邮件地址与社会登录唯一

一切的伟大工程,基本上是:

  • 当他们的电子邮件地址的用户登录进行比较,什么已经在DB
  • 如果电子邮件存在的社会登录连接到现有的电子邮件和用户登录到他们现有的帐户
  • 否则一个新的帐户制成。 (很像我注意到它在这里工作)

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

  • gmail.com
  • googlemail.com

而如果Facebook帐户在googlemail.com的谷歌帐户进行(使用gmail)将无法链接。现在我已经通过检查DB两个gmail.comgooglemail.com解决了谷歌Facebook的关系,但如果是反转,Facebook是谁也找不到地址的一个问题就来了。

我以为我可以只添加gmail.comgooglemail.com检查到facebook登录功能来检查unqiue电子邮件地址,但我想知道这是否会导致我不能预见的问题。

一些在我脑海里的事情是:

  • 与其它API等
  • 复杂
  • 安全未来的兼容性? (我解决这个问题有点通过使用Facebook的API在verified标志)
  • 其他电子邮件提供商可能有指向同一个帐户双重电子邮件域相同的问题(也许我会写一个巨大的unmantainable列表? )。

所以问题是:加入DB条款通过gmail.comgooglemail.com到我的Facebook登录功能,一个坏主意找?

我应该承担gmail.comgooglemail.com是两个单独的帐户?

感谢您的想法,

回答

0

我决定仅通过与电子邮件地址连接寻找既googlemail.comgmail.com结构域实际上解决这个问题时,在与Facebook或谷歌用户登录。

这似乎工作得很好,并且比标准化和潜在更改用户信息以满足此问题要好。

1

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

示例: 用户输入测试@ Googlemail电子邮件。COM

算法是:

email = "[email protected]" 
replace("@googlemail.com","@gmail.com",email) 
authenticate(email); 
+0

嗯是标准化到一个域,我也这么想过,我可以试试,谢谢 – Sammaye 2012-07-25 19:25:29

相关问题