让offline_access与Facebook合作

时间:2009-03-05 22:50:59

标签: ruby-on-rails facebook

我正在使用Facebooker和Rails将我的应用程序连接到Facebook。我可以指导用户完成授权过程,并通过授予我的应用程序脱机访问权限的过程。

我如何实际离线访问信息?有没有办法请求一个不会过期的session_key,以后我可以使用,只要用户没有撤​​销我在Facebook上的应用程序的权限?

任何帮助非常感谢。建议无需特定于轨道。

4 个答案:

答案 0 :(得分:2)

一旦您要求并被授予离线访问权限,您从Facebook获取的HTTP POST参数(fb_sig_session_key)将无法到期。

你可以通过检查fb_sig_expires参数检查你是否有这样的密钥,如果这是“0”,那么会话密钥没有到期。

如果您有auth_token,那么您可以调用getSession来获取会话密钥并检查expires字段:

var auth = _auth.getSession(AuthToken);
string sessionKey = auth.session_key;
long uid = auth.uid;
bool expires = auth.expires > 0;

答案 1 :(得分:1)

我刚刚在我的博客上发了一个tutorial,其中有关如何访问离线用户数据的分步说明。它假设您正在使用RoR和Facebooker插件。

答案 2 :(得分:0)

编辑:apparently,授予“offline_access”仍然会为您提供(并将继续这样做)无限会话密钥。只需保存此特殊密钥并在调用Status.get等时使用它。请参阅here以获取(PHP)代码示例。

http://wiki.developers.facebook.com/index.php/New_Design_User_Login

  

不再需要许多API调用   会话密钥

因此,如果您的应用被授予offline_access,则可以在没有session_key的情况下使用API​​调用listed here

  

我们正在改变更多方法   不需要会话密钥   当用户离线时,   比如发送通知。

答案 3 :(得分:0)

获得用户的离线访问权限后,诀窍是使用filter_key参数“网络”进行呼叫。

在PHP中,它是:

$feed = $facebook->api_client->stream_get($uid, '', '', '', 20, 'network', '');

尝试一下,它有效......