根据会话ID识别/管理用户(会话ID到用户ID到用户数据之间的映射)

时间:2012-11-02 16:49:08

标签: facebook session cookies oauth session-cookies

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

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

  2. 此时我需要在用户请求中设置唯一的SESSION_ID(cookie)吗?经过身份验证? 我对这部分感到困惑(并且通常使用会话管理)。当我在会话上设置属性时,浏览器会记住它是否在每次请求发送到我的服务器?所有页面?

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

1 个答案:

答案 0 :(得分:1)

  1. 没关系,您真正想做的就是能够将特定的Facebook用户ID与您的网络应用程序中创建的数据匹配,而不是来自图谱API。
  2. 此时您完成登录流程(当您收到访问令牌时)。设置会话时,浏览器将记住其中的键值对,直到会话被清除。因此,您希望您的代码能够将使用浏览器的人与数据库中的特定用户相关联(或者如果他们没有会话则不会)。因此,无论您使用何种会话值,您还需要将其与用户ID一起存储在数据库中。
  3. 见上文。
  4. 老实说,最简单的方法就是使用Facebook Javascript SDK。这将自动通过cookie处理所有访问令牌检索和用户持久性,而无需为其编写代码。最终,这意味着您需要做的就是将Facebook用户ID与应用程序生成的内容一起存储在数据库中,而不必担心存储访问令牌或会话变量。这里有一个简单的分步指南: https://developers.facebook.com/docs/howtos/login/getting-started/
    (在步骤5中,您将收到用户ID,您可以从此处对服务器端代码进行AJAX调用,以将其存储在您的数据库中)