【问题标题】:Integrating Facebook Authentication with existing ASP.NET Membership将 Facebook 身份验证与现有 ASP.NET 成员身份集成
【发布时间】:2011-07-06 18:02:39
【问题描述】:

编码平台:使用 C# 的 ASP.NET 4.0 WebForms

我们有一个网站,其中包含由 ASP.NET Membership Provider 管理的现有登录详细信息。
现在客户想要将 Facebook Connect 添加到它。

所以在注册时,我将使用 Facebook 按钮进行注册。
我应如何继续将成功的身份验证从 facebook 集成到我的会员提供商?

我的计划是在 ASP.NET Membership 中创建一个具有唯一标识符的用户名作为新用户,并将其链接到另一个包含其他开放 ID 用户的表(因为将来我们计划扩展到 Google、Twitter、生活和所有)。这是最好的方法吗?

【问题讨论】:

标签: asp.net facebook authentication asp.net-membership facebook-c#-sdk


【解决方案1】:

嗯,我认为你有两个选择。

选项 A: 使用Facebook Registration Plugin,然后将用户注册为普通用户,即没有FB用户ID存储到数据库中,您只有一种用户。

选项 B: 在您的 FB 连接中请求email permission 并获取用户电子邮件,以便与您的用户表进行比较并进行匹配(您的用户表 ID 与 FB uid),以防在您的数据库中找到它。

HTH!

【讨论】:

  • 电子邮件权限存在小问题,因为 facebook 允许我们更改电子邮件 ID。
  • 您只会在他们第一次访问、登录或注册您的网站时比较电子邮件。一旦他们这样做了,您就可以将该 Facebook UID 与您网站的帐户相关联,并且后续邮件更改不会影响您,因为您可以使用 FB UID 进行比较。
【解决方案2】:

等等,codeplex 上有一个 facebook 开发者工具包吗?希望我知道这一点。 :-p

我注意到大多数允许您使用 Facebook 或电子邮件登录的网站只会让您做一个或另一个。例如,我有一个 LivingSocial.com 帐户 - 虽然他们提供 FB,但我只能使用我的电子邮件登录(因为我的帐户就是这样创建的)。我有一个 BrazenCareerist 帐户,但我只能使用我的 FB 登录(即使他们支持电子邮件),因为该帐户是通过 FB Connect/Open-Graph 创建的。

我不喜欢这种方法,因为它感觉受限 - 所以我希望用户能够以他们想要的方式登录。您有 4 个流程:

  1. 用户使用 FB 注册网站,然后在返回时使用 FB 登录
  2. 用户注册 FB,然后在返回时使用电子邮件登录
  3. 用户使用电子邮件注册,然后在返回时使用 FB 登录
  4. 用户使用电子邮件注册,然后在返回时使用电子邮件登录

如果他们使用 facebook 注册,请获取他们的电子邮件地址以供将来使用(通过 FB API)。

假设他们已经在您的网站上注册,那么当他们使用 FB 登录时,无需请求密码。 (查看他们的文档http://developers.facebook.com/docs/authentication/

如果他们使用电子邮件地址登录,则需要输入密码。如果他们使用电子邮件地址注册,他们可能会创建;但诀窍是,如果他们在 FB 上注册,他们可能没有密码。

我创建了一个页面,在注册 FB 时要求输入密码。它会给出一条友好的消息,例如“恭喜!您在 [我们的网站] 上的帐户已创建。为了您的隐私,Facebook 不会告诉我们您的密码是什么。请在下面为 [我们的网站] 创建一个密码。(只要您用facebook登录,你永远不会用这个)。”

希望对您有所帮助。

【讨论】:

  • 不可能,戴夫。那么我将从哪里提取用户名并确保其唯一性?我想要类似stackoverflow模型的东西,它们合并openids。我的直觉是,stackoverflow 正在为每个新注册生成一个用户并将打开的 id 链接到它。顺便说一句,facebooktoolkit.codeplex.com 现已过时 facebooktoolkit.codeplex.com 是目前大多数开发人员使用的 sdk。
  • 好点 - 我在想一个系统,其中“用户名”是电子邮件地址,并且 facebook 连接帐户的电子邮件帐户与他们试图在您的帐户上连接的帐户相同地点。在这种情况下,我认为它会起作用 - 但这是一个有限的用例,就像你向我指出的那样,并不总是适用。
  • 我相信 facebooksdk.codeplex.com 是正确的 CodePlex 项目,Naveen
  • @GrahamMc:非常真实的伙伴。这是一个错字,现在无法修复。
【解决方案3】:

CodePlex 上的 Facebook C# SDK 项目提供了一些很棒的示例项目供您入门。我一直在使用的是 CS-AspNetWebForms-RegistrationForm 示例。这很容易理解,但是遇到了一些问题,例如获取 Facebook 用户 ID。

拼图中缺少的部分是将您从 Facebook 注册中获取的那些字段推送给会员提供者。根据您的经验水平,它应该不难完成。

【讨论】:

    【解决方案4】:

    恐怕我的回答会有点古怪,因为我没有使用它,也不知道它是否与 facebook 集成。但是您可能对 Windows Identity Foundation 感兴趣:http://msdn.microsoft.com/en-us/security/aa570351

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2020-04-18
      相关资源
      最近更新 更多