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

6
我正在尝试将Facebook身份验证与asp.net网站集成。因此,如果用户决定在该网站上注册,他们可以使用其Facebook凭据进行注册。目前,我已经获得了Facebook访问令牌和用户详细信息,但不确定接下来该怎么做。该网站使用asp.net成员身份验证。以下是我认为新用户注册时应该发生的事情(但不确定是否正确): 0)用户访问网站并决定使用其Facebook凭据进行注册。 1)用户提供凭据,我收到访问令牌和他们的用户信息。 2)我将此信息存储在我的数据库中,并使用我收到的数据创建一个asp.net成员身份验证用户。(此时我必须生成密码)。 3)将用户登录到网站,以便他可以自由浏览。 如果我走在正确的道路上,我希望得到一些建议,并了解如何生成密码。(我考虑可能结合电子邮件和Facebook用户ID、检索哈希并存储。)谢谢。

更新1
我找到了一个this的stackoverflow问题,他们建议使用:

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

2个回答

4
我认为你的方法是可行的;你实际上是用接收到的Facebook ID替换了用户名/密码验证,并让该ID在你的应用程序中作为有效标识符传递。
你说你需要在你的应用程序中生成一个密码,这点我不太确定。就ASP.NET成员身份提供程序而言,确实需要使用密码创建用户,但如果您只想让用户使用Facebook连接登录,则可以选择填写随机字符串。
决定绑定哪个Facebook属性也值得考虑一下。当然,自然的选择是Facebook标识符,因为它对于用户来说是唯一的,但如果您选择以后允许其他身份验证机制-例如Google OpenID-则从Facebook存储电子邮件等信息也可能会有所好处。
可能还有一个很好的主意是在你的应用程序中自动生成一个用户名,而不是由Facebook定义。如果您选择Facebook标识符作为登录名,则对Facebook有一个严格的依赖性,这使得引入新的身份提供者变得困难。如果您选择一个随机标识符和一个建立Facebook ID和您的ID之间连接的关联表,那么您以后也将获得一些灵活性。如果您希望从ASP.NET Login控件(如LoginStatus)获得有意义的输出,则选择有些更加限制性的电子邮件地址可能是更好的选择。

2

我没有阅读下面/上面的回复,因此可能已经涵盖了这一点,但请注意,在IE中从iframe内部设置cookie会遇到严重问题。这是一个可怕的噩梦。我不确定是否已经修复了这个问题,如果可以修复,请在所有浏览器中进行彻底测试。

此外,请查看.net开放认证项目。我个人没有使用过,但据说它支持OAuth以及OpenId和ICards,这可能有助于后续的其他集成点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接