Facebook与PHP API - 无限会话

时间:2011-06-09 18:11:50

标签: php facebook session facebook-graph-api infinite

我已经在互联网上查看了一些有关此内容的信息,但我发现的所有内容都是SDK版本2.X.X,现在3.0.0版本无法使用。

我需要的是获取用户信息并将其用作服务器,以便随时发布而无需依赖cookie。

知道如何做到这一点?旧的教程就是这样的:

$facebook->getSession()

在会话中,我会得到密钥,但这种方法不再存在。知道如何获取会话密钥并重新使用吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您需要“无限”会话,请询问offline_access权限。从那里,你必须从会话中取出access_token并将其存储在数据库中。

答案 1 :(得分:0)

Facebook for PHP提供的SDK旨在在用户浏览您的网站时被调用和使用 - 在没有用户直接参与的情况下执行facebook API调用的操作需要使用相同方法但使用保存的令牌并启动的更强大的操作通过cronjobs或后台流程。

用于验证和授予权限的oAuth 2.0流程在Facebook的文档中有详细说明。

http://developers.facebook.com/docs/authentication/

您可以手动执行此处描述的逻辑,甚至无需使用标准HTTP请求库(如CURL)使用SDK。基本上,当用户首次寻求授予访问权限时,需要向facebook发送请求,此时浏览器应完全重定向到FB登录/权限对话框。您可以在此查询中指定所需的权限。您可以使用redirect_uri参数将其指向应用程序中的端点,然后获取Facebook返回的数据,将其发回以获取访问令牌,然后将最终的oAuth令牌保存到与之关联的文件或数据库行与该用户。

对于您所描述的操作类型,您需要在对Facebook进行URL调用时请求offline_access权限。这将生成一个永久有效的令牌,直到用户使用“Aps”界面撤消其Facebook帐户中的权限。

您可以在此处了解有关oAuth的更多信息: http://oauth.net/2/

我也强烈建议订阅Facebook的开发者RSS源。他们经常在如何操作API方面做出巨大转变,通常只在那里宣布它们。

http://developers.facebook.com/blog/feed