Facebook身份验证和Asp.Net成员资格

时间:2011-05-08 18:29:42

标签: c# asp.net facebook

我正在尝试将facebook身份验证与asp.net网站集成。

因此,如果用户决定在网站注册,则可以使用他们的Facebook凭据进行注册。

我目前处于facebook访问令牌和用户详细信息的位置,不知道应该如何离开这里。

该网站使用asp.net会员资格授权。

我认为,如果新用户决定注册,我认为应该发生这种情况:(但不确定这是否可行)

0)用户访问该网站并决定使用他们的Facebook凭证进行注册 1)用户提供他们的凭证,我收到访问令牌及其用户信息 2)我将此信息存储在我的数据库中,并使用我收到的数据创建一个asp.net成员资格用户。 (此时我必须生成密码)。
3)将用户登录到站点,以便他可以自由导航。

如果我在正确的道路上以及如何生成密码,我将不胜感激。 (我想也许可以将电子邮件和facebook userId结合起来,检索哈希和存储。)

由于

更新1
我发现他们建议使用this SO问题:

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.setauthcookie(v=VS.90).aspx

2 个答案:

答案 0 :(得分:4)

我认为你接近是合理的;你有效地做的是用收到的facebook id替换用户名/密码验证,并让该id作为你的应用程序中的有效标识符传递。

你说你需要在你的应用程序中生成一个我完全确定的密码。确实,就ASP.NET中的成员资格提供程序而言,您需要使用密码创建用户,但如果您只希望用户使用Facebook连接登录,则可以选择填写随机字符串。

决定绑定哪个facebook属性也值得一点了解。自然的选择当然是facebook标识符,因为这对用户来说是不合理的,但是如果你以后选择允许其他身份验证机制 - google open id for one - 你也可以从facebook等存储电子邮件中受益。

在您未在Facebook定义的应用程序中自动生成用户名也可能是个好主意。如果您选择Facebook标识符作为登录名,则您对Facebook有严格的依赖性,难以引入新的身份提供商。如果你选择一个随机标识符和一个关联表来建立facebook id和你的id之间的联系,你以后也会获得一些灵活性。如果您想从ASP.NET登录控件(如LoginStatus等)获得有意义的输出,那么选择更具限制性的电子邮件地址可能是更好的选择。

答案 1 :(得分:2)

我没有阅读下面/上面的回复,所以这可能已被覆盖,但要注意我遇到了一个严重的问题,没有在IE中的iframe中设置cookie。这是一场血腥的噩梦。我不确定这是否已修复,如果它已修复,但只是意识到我的经验并在所有浏览器中进行彻底测试。

同时结帐.net open auth项目。我没有亲自使用它,但据说它支持OAuth以及OpenId& ICards,以后可能会对其他集成点有所帮助。