【发布时间】:2009-03-05 22:50:59
【问题描述】:
我正在使用带有 Rails 的 Facebooker 将我的应用程序连接到 Facebook。我可以指导用户完成授权过程和授予对我的应用程序的离线访问权限的过程。
我该如何离线访问信息?有没有办法请求一个不会过期的 session_key,我可以在以后使用,只要用户没有撤销我在 Facebook 上的应用程序的权限?
非常感谢任何帮助。建议不必针对特定的轨道。
【问题讨论】:
我正在使用带有 Rails 的 Facebooker 将我的应用程序连接到 Facebook。我可以指导用户完成授权过程和授予对我的应用程序的离线访问权限的过程。
我该如何离线访问信息?有没有办法请求一个不会过期的 session_key,我可以在以后使用,只要用户没有撤销我在 Facebook 上的应用程序的权限?
非常感谢任何帮助。建议不必针对特定的轨道。
【问题讨论】:
一旦您请求并获得批准,您在 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;
【讨论】:
我刚刚在我的博客上创建了tutorial,并逐步解释了如何访问离线用户的数据。它假定您正在使用 RoR 和 Facebooker 插件。
【讨论】:
编辑:apparently,授予“offline_access”仍然会给您(并将继续这样做)无限会话密钥。只需保存此特殊密钥并在调用 Status.get 等时使用它。请参阅 here 以获取 (PHP) 代码示例。
http://wiki.developers.facebook.com/index.php/New_Design_User_Login:
许多 API 调用不再需要 会话密钥
因此,如果您的应用被授予离线访问权限,您可以在没有 session_key 的情况下使用 API 调用 listed here。
我们正在更改更多方法,以便您 不需要会话密钥 当用户离线时, 比如发送通知。
【讨论】:
一旦您获得用户的离线访问权限,诀窍就是使用“网络”的filter_key 参数进行调用。
在 PHP 中是:
$feed = $facebook->api_client->stream_get($uid, '', '', '', 20, 'network', '');
试试吧,它有效....
【讨论】: