node.js – everyauth – Facebook API和会话处理

我运行一个node.js服务器应用程序,使用everyauth作为我的身份validationscheme,并尝试从我的服务器访问Facebook API。 一旦用户login(通过使用Facebook模块的everyauth),我目前处理这种方式是:

var oauth = everyauth.facebook.oauth; oauth.get('https://api.facebook.com/method/fql.multiquery?format=json&queries=' + multiquery, req.session.auth.facebook.accessToken, function (err, data) { // do stuff here }); 

这工作最初但几分钟后,通常约10米的不活动,我开始从Facebook API获得过期的令牌响应:

 Error validating access token: Session has expired at unix time... 

在阅读了一些Facebook文档之后 ,似乎大多数访问令牌都应该持续默认的2小时,所以我想知道我是不是以正确的方式构buildAPI调用。 任何build议/想法的欢迎,谢谢!

编辑:

只是多一点的信息,从错误调用返回的过期unix时间确实less于当前时间,只是不知道为什么会这么短。 在此期间,我会做更多的debugging…

您是否知道,如果您在请求FB授权时在范围中包含“offline_access”选项,则访问令牌将永不过期。

http://developers.facebook.com/docs/reference/api/permissions/#extended_perms

这可能对您而言并不理想,因为它需要扩展权限,但可能会提供解决方法。