C# 在sqlmembership提供程序中设置Facebook用户名

C# 在sqlmembership提供程序中设置Facebook用户名,c#,asp.net-mvc,facebook,membership-provider,C#,Asp.net Mvc,Facebook,Membership Provider,我正在使用Facebook connect并在用户登录后注册他们(我将他们添加到我的数据库中) 我正在使用sqlmembership提供程序。目前,我正在获取Facebook用户的全名,并将其用作用户名。但我遇到的问题是,如果两个人的名字相同,它就不会注册第二个用户 我应该如何处理用户名?我在想,在网站中使用用户名时,附加Facebook id然后截断?有点难看,但想不出更好的办法 有什么建议吗?您需要facebook ID;您可以将其存储在会话中,或者创建一个自定义的IPrincipal和/或

我正在使用Facebook connect并在用户登录后注册他们(我将他们添加到我的数据库中)

我正在使用sqlmembership提供程序。目前,我正在获取Facebook用户的全名,并将其用作用户名。但我遇到的问题是,如果两个人的名字相同,它就不会注册第二个用户

我应该如何处理用户名?我在想,在网站中使用用户名时,附加Facebook id然后截断?有点难看,但想不出更好的办法


有什么建议吗?

您需要facebook ID;您可以将其存储在会话中,或者创建一个自定义的IPrincipal和/或IIdentity,并将其和用户信息一起存储


HTH.

考虑创建一个自定义Sql成员资格提供程序,我自己在应用程序中使用该方案,这样您就可以对存储数据的方式进行精细控制。 看看

&


为什么要使用可能会改变的东西(人名)。人们结婚了,或者给自己起了一些愚蠢的绰号,有些人经常改变这些绰号


为什么不只用身份证呢?您总是可以创建另一个表(SqlMembership之外)来存储该用户的最新名称

我刚才这么做了

这是我的桌子:

FacebookUniqueID BIGINT, PRIMARY KEY
FacebookEmail    NVARCHAR(100), NULL
我还存储了其他用于审计的内容,但这是关键信息

现在,您将始终获得Facebook用户id。但您不会始终获得用户的电子邮件地址-因为他们可以拒绝访问-因此我允许空值

我存储电子邮件的原因是,唯一的ID不足以将用户与系统中的用户结合起来

在SqlMembershipProvider中,用户名通常是电子邮件。因此,我使用“FacebookEmail”字段链接用户

如果他们不允许您使用他们的电子邮件地址,您将无法执行单一登录(例如,当他们通过Facebook身份验证时,自动将他们登录到您的网站)


但至少如果他们最终授予您权限,您可以更新数据库中的电子邮件字段,然后执行单一登录。

如果我这样做,我应该如何处理显示不同用户名的问题。例如,当我使用Context.User.Identity.Name时,我的网站注册用户将显示他们的用户名,而facebook用户将显示facebookID