我正在使用Facebook连接并在用户登录后注册用户(我将其添加到我的数据库中)。
我正在使用sqlmembership提供程序。目前我正在获取Facebook用户的全名并将其用作用户名。但我遇到的问题是如果2个人有相同的名字,它将不会注册第二个用户。
我该如何处理用户名?我想添加Facebook ID然后在网站中使用用户名时截断?有点难看,但想不出更好的方法。
有什么建议吗?
答案 0 :(得分:0)
你需要facebook ID;您可以将其存储在会话中,或创建自定义IPrincipal和/或IIdentity并将其与用户信息一起存储。
HTH。
答案 1 :(得分:0)
考虑创建一个自定义Sql成员资格提供程序,我自己使用该方案用于我的应用程序,这样你就可以对你想要存储数据的方式进行精细控制。 看看
http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider
&安培;
http://www.asp.net/general/videos/how-do-i-create-a-custom-profile-provider
答案 2 :(得分:0)
为什么要使用可能会改变的东西(人名)。人们结婚,或为自己设置愚蠢的绰号,有些人经常更换。
为什么不使用ID?你总是可以创建另一个表(在SqlMembership之外)来存储该用户的最新名称
答案 3 :(得分:0)
我刚才这样做了。
这是我的表:
FacebookUniqueID BIGINT, PRIMARY KEY
FacebookEmail NVARCHAR(100), NULL
我还存储了其他用于审计的内容,但这是关键信息。
现在,您将始终获取Facebook用户ID。但是你不会总是获取用户的电子邮件地址 - 因为他们可以拒绝访问 - 因此我允许NULL。
我存储电子邮件的原因是,唯一ID不足以将用户与系统中的用户结合。
在SqlMembershipProvider中,用户名通常是电子邮件。所以我使用“FacebookEmail”字段链接用户。
如果他们不允许您使用他们的电子邮件地址,您将无法执行单点登录(例如,当他们通过Facebook身份验证时自动将他们登录到您的网站)。
但至少如果他们最终授予您许可,您可以更新数据库中的电子邮件字段,然后执行单点登录。