存储Facebook访问令牌的标准方法是什么?数据库还是cookie?

时间:2012-07-30 03:27:38

标签: php facebook

我刚刚用SDK制作了一些Facebook应用程序,但现在我想尝试不使用SDK制作一个。我对访问令牌的工作方式感到困惑。

我认为Facebook的PHP SDK将访问令牌存储在cookie中,但SO上的大多数人似乎都将其存储在数据库中。我应该在哪里存储访问令牌?

如果我将它存储在数据库中,我是否将用户的ID存储在cookie中?

1 个答案:

答案 0 :(得分:8)

这是一个讨论问题,因为答案取决于你想用它做什么。

快速提醒一下这个过程:

  1. 获取令牌(来自某个地方)
  2. 与Facebook对话并获取与该令牌相关联的UserID
  3. 更新令牌(如果查找长访问令牌)
  4. 存储令牌(如果您想稍后记住它)
  5. 使用UserID执行某些操作,使用令牌验证呼叫。
  6. 令牌是facebooks“SessionID”。只要您拥有令牌,您就可以找到拥有令牌的用户(如果令牌仍然有效)。如果您编写自己的会话处理程序,则可以使用与常规SessionID相同的方式保留该令牌:

    • 在会话变量($ _SESSION)中,它将在PHP会话处于活动状态时保持
    • 在cookie($ _COOKIE)中,该cookie将在cookie有效时持续存在
    • 通过在$ _GET或$ _POST变量
    • 之间传递网页
    • 在数据库中 - 但是你必须拥有我们自己控制的另一个SessionID(在$ _SESSION,$ _COOKIE,$ _GET或$ _POST中传递)或另一种获取正确令牌的方式。

    因此,对于磨坊的运行,存储在会话或cookie中,具体取决于哪个更适合您的网站。这是最简单的。

    为了两个目的,你只会考虑存储在数据库中的复杂性:

    1. 您有另一个控制您的应用程序的会话系统(特别是您不想弄乱其内部会话系统的第三方应用程序,因此请在顶部添加您自己的包装器)
    2. 您希望在用户不在场时执行某些操作(例如,在您自己的主持人系统中批准评论后发布到墙上)。在这种情况下,您需要令牌来批准帖子,但由于用户不在,您无权访问$ _COOKIE或$ _SESSION等。
    3. 希望有所帮助。