1

我正在使用TweetSharp和Facebook C#SDK将Twitter和Facebook登录添加到MVC 3测试应用程序。使用Twitter和Facebook的多登录问题Oauth

当前当用户使用Twitter登录时,我在用户表中为该用户创建一个用户帐户,并将ID,令牌和令牌机密存储在带有用户表的外键的单独表中。由于id,令牌和令牌密码不会过期,所以当用户下次使用Twitter登录时,我可以快速找到正确的用户帐户。

如果下次同一用户使用Facebook登录会怎么样?由于Twitter不在他们的API中提供电子邮件,因此我没有共同的信息来将用户帐户绑定到Twitter或Facebook我假设我必须为Facebook登录创建一个新的用户帐户?有人对这个有经验么?有什么方法可以解决这个问题吗?

回答

0

不是一个真正的解决方案,更多的工作。我面临同样的问题,最终迫使用户在允许他们继续前进之前通过询问他们的电子邮件地址来完成他们的账户资料。这意味着如果邮箱地址与Facebook身份验证返回匹配使用Twitter登录创建的电子邮件地址,那么我不需要创建另一个帐户。

更大的困难来了另一种方式,如果该帐户是由Facebook身份验证第一次创建。这意味着一个不整洁的账户结婚。

说实话,我们从允许用户使用twitter登录获得的信息是不值得的努力,并最终完成只允许Facebook身份验证。我不确定twitter对您的解决方案有多重要。

不是我知道的完美答案,但我想我会分享我的经验。

+0

谢谢,我现在可能只用Facebook。 – Thomas 2011-06-24 15:08:29

+0

当你的帐户与你的应用相关联时,你能简单地从他们的Facebook/Twitter个人资料中获得他们的电子邮件吗?您需要做的只是请求在使用Facebook/Twitter注册时访问其电子邮件地址的权限,并且如果他们希望下次通过电子邮件登录,则会向其发送初始密码 – 2011-10-31 12:39:59

2

我使用唯一密钥在内部识别每个用户。当任何用户点击该网站时,我会检查用户密钥的Cookie。如果没有cookie,我创建一个新的密钥。将其添加到用户数据库并设置一个新的cookie。一旦用户首次通过Facebook,Twitter或.Net成员身份登录完成注册,该密钥永远与该用户结婚。

因此,当现有的Twitter用户第一次登录Facebook时,我们知道他们是谁,因为他们的用户密钥存在。这与macou建议的解决方案基本相同。 Macou's具有在新机器上工作的优势,或者如果cookie被清除,cookie解决方案具有不需要额外用户输入的优点。

0

你不能只使用一个cookie,因为我可以登录Facebook,然后我的妻子登录twitter使用相同的浏览器,在这种情况下,你不应该链接这两个账户。

我认为你需要做的还不止这些:

  1. 使用Cookie,则
  2. 使用name /名/登录名/ ...去看看它们是否匹配。

例子:

  1. Cookie编号:18459439731114330636,找到ID = 18459439731114330636.找到用户,去2,没找到,去3
  2. 是用户名/姓/名/ ...匹配当前用户?如果是的话,链接帐户。如果不是,请转至3.
  3. 创建一个新用户。