2012-07-30 77 views
3

前段时间我用SDK做了几个Facebook应用程序,但现在我想尝试在不使用SDK的情况下制作一个。我很困惑如何使用令牌的工作。什么是存储Facebook访问令牌的标准方法?数据库或cookie?

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

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

回答

8

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

只是过程的快速提醒:

  1. 获得令牌(从某处)
  2. 交谈Facebook和获得与该令牌
  3. 更新令牌相关联的用户ID(如果寻找长期访问令牌)
  4. 存储令牌(如果您想记住它以后)
  5. 对UserID执行一些操作,使用令牌验证调用。

令牌是Facebook的“SessionID”。只要持有该令牌,就可以找到拥有该令牌的用户(如果该令牌仍然有效)。您可以保留该令牌的持有相同的方式,你会经常的SessionID,如果你写你自己的会话处理程序:在会话变量($ _SESSION),这将同时PHP会话持久

  • 活跃
  • 在Cookie($ _COOKIE),而cookie有效期
  • 通过网页之间传递的$ _GET或$ _POST变量
  • 在一个数据库,这将持续存在 - 但你必须有其他的SessionID我们自己的控制之下(通过在$ _SESSION,$ _COOKIE,$ _GET或$ _POST)或其他方法来获得正确的标记。

因此,对于工厂的运行,存储在会话或cookie中,取决于哪种更适合您的网站。这是最简单的。

你只去了一个数据库存储的复杂性有两个目的:

  1. 您有控制您的应用程序(尤其是第三方应用程序,你不想惹另一个会议系统与他们的内部会话系统,所以添加自己的包装在上面)
  2. 当用户不存在时,你想做的事情(例如,在你自己的版主系统批准评论后张贴到墙上)。在这种情况下,您需要令牌批准帖子,但由于用户不在场,您无权访问$ _COOKIE或$ _SESSION等。

希望有所帮助。