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

Leo*_*ang 3 php facebook

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

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

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

Rob*_*bie 8

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

只需快速提醒过程:

  1. 获取令牌(来自某个地方)
  2. 与Facebook交谈并获取与该令牌相关联的UserID
  3. 更新令牌(如果查找长访问令牌)
  4. 存储令牌(如果您想稍后记住它)
  5. 使用UserID执行某些操作,使用令牌验证调用.

令牌是facebooks"SessionID".只要您拥有令牌,您就可以找到拥有令牌的用户(如果令牌仍然有效).如果您编写了自己的会话处理程序,则可以使用与常规SessionID相同的方式保留该标记:

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

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

您只会出于两个目的而在数据库中存储的复杂性:

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

希望有所帮助.