1

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

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

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

4

3 回答 3

2

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

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

于 2011-11-19T23:47:56.203 回答
0

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

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

  1. 然后使用cookie
  2. 使用 name/first name/login name/... 查看它们是否匹配。

例子:

  1. cookie id:18459439731114330636,找到id = 18459439731114330636的用户。找到了,去2,没找到,去3。
  2. 用户名/名字/姓氏/...是否与当前用户匹配?如果是,请关联帐户。如果没有,请转到 3。
  3. 创建一个新用户。
于 2011-12-08T14:55:01.663 回答
0

不是真正的解决方案,更多的是解决方法。我遇到了同样的问题,最终迫使用户通过询问他们的电子邮件地址来完成他们的帐户资料,然后才允许他们继续进行。这意味着,如果使用 Facebook 身份验证返回的电子邮件地址与使用 twitter 登录创建的电子邮件地址相匹配,那么我不需要创建另一个帐户。

如果帐户是由 facebook auth 首先创建的,那么更大的困难就来了。这意味着账目不齐。

老实说,我们从允许用户使用 twitter 登录获得的信息不值得付出努力,最终只允许 Facebook auths。我不确定 twitter 对您的解决方案有多重要。

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

于 2011-06-14T00:21:52.440 回答