2011-05-08 97 views
6

我正在尝试将facebook身份验证与一个asp.net站点进行整合。Facebook身份验证和Asp.Net成员身份

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

我目前在我有Facebook访问令牌和用户的详细信息,不知道我应该从这里走。

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

这是我相信情况应该发生一个新的用户决定注册:(但不知道这将要走的路)

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

如果我在正确的路径上以及如何生成密码,我将不胜感激。 (我想,也许在结合电子邮件和Facebook用户id,检索哈希和存储。)

感谢

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

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

回答

4

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

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

决定绑定哪个facebook属性也值得一点说明。自然的选择当然是facebook标识符,因为这对用户来说是不容置疑的,但如果您选择稍后允许使用其他身份验证机制 - Google会为其中一个身份验证机制开放 - 您可能还会从存储来自Facebook等的电子邮件中受益。

也许这也是一个好主意,在你未定义的facebook应用程序中自动生成用户名。如果您选择Facebook标识符作为登录名称,则您很难依赖Facebook,导致新身份提供商难以引入。如果您选择一个随机标识符和一个建立Facebook标识和您的ID之间的连接的关联表,您稍后也可以获得一些灵活性。如果您想从LoginStatus等ASP.NET登录控件获得有意义的输出,选择稍微有限的电子邮件地址可能是更好的选择。

2

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

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