1

我编写了一个通过 Facebook 连接 (o-Auth) 对用户进行身份验证的网络应用程序。用户通过身份验证后,我有一个 facebook 令牌。使用这个令牌,我向 Facebook 发送请求以获取其基本用户信息。此时我有了用户唯一的 Facebook id,我知道它是谁。

  1. 我应该如何在用户、令牌和数据库中的数据之间建立联系?现在我的架构非常简单:facebook_id 是主键,还有一些其他列包含令牌和用户数据。这是正确的方法吗?

  2. 在什么时候我需要在用户请求上设置一个唯一的 SESSION_ID (cookie)?认证后呢?我对这部分(以及一般的会话管理)感到困惑。当我在会话上设置属性时,浏览器是否会记住它并在每个请求中将其发送到我的服务器?跨所有页面?

  3. 最重要的问题是,我如何在 SESSION ID 和用户之间进行映射?一旦我在他的请求上设置了会话 ID,我需要在每个请求中弄清楚它是谁。最好的方法是什么?

4

1 回答 1

1
  1. 没关系,您真正想要做的就是能够将特定 Facebook 用户 ID 与您的网络应用程序创建的或在您的网络应用程序中创建的数据匹配,这些数据不是来自 Graph API 。
  2. 在您完成登录流程的那一刻(当您收到访问令牌时)。当您设置会话时,浏览器会记住其中的键值对,直到会话被清除。因此,您希望您的代码能够将使用浏览器的人与数据库中的特定用户关联起来(如果他们没有会话,则不关联)。因此,无论您使用什么会话值,您还需要将其与用户 ID 一起存储在数据库中。
  3. 往上看。

老实说,最简单的方法就是使用 Facebook Javascript SDK。这将通过 cookie 自动处理所有访问令牌检索和用户持久性,而无需您为其编写代码。最终,这意味着您需要做的就是将 Facebook 用户 ID 与应用程序生成的内容一起存储在数据库中,而无需担心存储访问令牌或会话变量。这里有一个简单的分步指南: https
://developers.facebook.com/docs/howtos/login/getting-started/ (在第 5 步中,您将收到用户 ID,您可以进行 AJAX 调用服务器端代码从这里存储到你的数据库中)

于 2012-11-02T17:14:06.553 回答