2012-04-21 96 views
3

我见过很多示例,并阅读了一些文章以更好地了解访问令牌过期情况,在本文中,Access Token Expiration已得到很好的解释。如何获得过期Facebook用户访问令牌的通知

我知道如何更新到期访问令牌。但是,问题在于,正如文章中所解释的那样,访问令牌可能有四个原因到期。

因此,当访问令牌过期并且可以在任何时候都没有确定性。传统的解决方案是使用offline_permision,这将很快被FB弃用。

这里是我想要实现的:当用户使用我们的Facebook应用程序

  1. 一旦访问令牌到期,同时,我想FB到通知我。

  2. 一旦收到通知,更新访问令牌。

我不认为以下达到我想要的。

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    alert('The status of the session is: ' + response.status); 
}); 

因此,有没有办法从访问令牌过期时从FB有通知?

回答

2

当您尝试访问带有过期令牌的API时,Facebook将发回一条错误消息。您只需在处理Facebook响应的回调函数中检查该错误,并且如果存在错误,请刷新令牌并再次尝试API调用。

从Facebook:

Facebook的不会通知您,先前发出的访问令牌变得无效。除非您持续保留了与访问令牌一起传递给应用程序的失效时间,否则当您尝试向API发出请求时,通常情况下,您的应用程序首先知道给定令牌已变为无效。

+0

是的,我知道Facebook将返回响应。我更喜欢基于事件的通知,意味着当它因任何原因失效时,它会通知FBevent订阅一些内容。 但是,正如你帮助强调Facebook不通知。 hmnn ...好吧,换一种方式,怎么样把有效期延长到至少一天?那个怎么样? – MrCooL 2012-04-22 08:36:39

+1

你可以用循环间隔创建你自己的通知服务,但是这看起来确实没有什么帮助,因为如果令牌在间隔期间过期,你仍然需要处理错误。 至于扩展令牌,不幸的是,这是不可能的。你会在令牌(大部分时间)内获得一个到期时间,所以你可以做一些事情(设置一个事件来在令牌过期之前刷新令牌),但是它可能还会提前过期。 我同意我们可以通过FB.event.subscribe订阅一个事件 – LocalPCGuy 2012-04-22 18:51:41

相关问题