检测Facebook OAuth令牌过期

检测Facebook OAuth令牌过期,facebook,oauth,Facebook,Oauth,我有一个Facebook应用程序,可以在粉丝页面上定期发布帖子 为此,应用程序获取一个OAuth令牌,用于在页面上发布。要获取此令牌,用户需要访问应用程序。然而,有时Facebook会使这些代币失效,至少如果用户更改了他们的FB密码,而且在其他一些与安全相关的情况下也是如此 当这种情况发生时,应用程序将无法发布预定的帖子,用户会不高兴。我应该如何解决这个问题?当用户的令牌过期时,我可以向他们发送电子邮件,但我如何检测过期?考虑到我有100000多名用户,经常对代币进行投票会很昂贵。我们会直接回答

我有一个Facebook应用程序,可以在粉丝页面上定期发布帖子

为此,应用程序获取一个OAuth令牌,用于在页面上发布。要获取此令牌,用户需要访问应用程序。然而,有时Facebook会使这些代币失效,至少如果用户更改了他们的FB密码,而且在其他一些与安全相关的情况下也是如此


当这种情况发生时,应用程序将无法发布预定的帖子,用户会不高兴。我应该如何解决这个问题?当用户的令牌过期时,我可以向他们发送电子邮件,但我如何检测过期?考虑到我有100000多名用户,经常对代币进行投票会很昂贵。

我们会直接回答您的问题,给您:

在此处输入访问令牌以检查其有效性和其他信息。但我知道这不能解决你的问题。我可以帮你找到正确的方向


您可以看到,令牌有效性受到您向用户请求的权限的影响。有一个
offline\u access
权限可以为您提供一个不会超时的访问令牌,而不是常规的一小时长的令牌。我相信你知道这一点,因为你已经能够安排用户帖子

不幸的是,
离线访问
现在无法使用。从现在起,Facebook将默认给我们2个月的访问权,即使没有许可。从那时起,我们需要“刷新”或扩展访问令牌。请阅读该链接的更多内容

关于你在使用中遇到的问题,比如更改密码、注销等等,Facebook也有自己的解决办法


如果您想亲自检查令牌有效性,您可以设置一个每小时或每天运行的CRON(取决于您),并为每个令牌(/me)执行一个快速API调用。如果失败或生成错误,则令牌过期


如果您每分钟都这样做,效果会更好:需要检查10到20个令牌,这样您的服务器在一次执行中就不会有超过100000个调用的沉重负担。

我尝试过做完全相同的事情,但令牌对我来说甚至持续不了几个小时。令牌与您一起使用多长时间?这里的内容相同:-希望获得此解决方案…关于“如何检测过期”-您将在发布到风扇页面时收到OAutheException:-或者您希望提前检测吗?然后每晚进行“//?accessToken=”检查。就我所知,没有其他任何东西。@BeemerGuy.net如果令牌被Facebook取消,您需要交换代码GET arg以使用“刷新”来获取实际的2个月令牌。是的,过期的令牌无法刷新。即使原因是超时,也不是密码更改。如果你也不想每次都设置CRON来检查,那么你可以在计划发布失败时发送一封电子邮件。请他们再次登录并立即发布。谢谢dragonjet。通过检查令牌有效性,我当然是指通过软件。但进行数百万次API调用仍然很昂贵。我也在发送电子邮件,但目前我是在我已经无法使用代币之后才这样做的(因为持续轮询代币的有效性太贵了),所以从客户的角度来看,我的应用程序随机不起作用,我收到了很多投诉。