我正在使用Facebooker和Rails将我的应用程序连接到Facebook。我可以指导用户完成授权过程,并通过授予我的应用程序脱机访问权限的过程。
我如何实际离线访问信息?有没有办法请求一个不会过期的session_key,以后我可以使用,只要用户没有撤销我在Facebook上的应用程序的权限?
任何帮助非常感谢。建议无需特定于轨道。
答案 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', '');
尝试一下,它有效......