代表用户发布到Facebook:如何处理令牌到期?

时间:2012-11-08 10:50:54

标签: facebook oauth-2.0

我正在网站上实现与Facebook / Twitter / ...功能的连接。这个想法是,一旦用户将他的帐户与外部服务连接起来,我们的网站就可以代表用户发布消息。

使用Twitter没有问题,因为OAuth access_token没有过期。但是对于FB,它会每两个月到期一次,当用户注销,更改密码或明确取消对应用程序的授权时。

我应该如何处理令牌过期?对我而言,如果我可以在不打扰用户的情况下自动刷新令牌,那将是理想的,但除非我错过了某些内容,否则似乎没有任何方法可以做到这一点。所以,现在我有两个想法:

  • 不那么尴尬的方式:每次用户登录网站时,检查令牌是否已过期,并通知用户她已重新授权该应用程序。
  • 更尴尬的方式:每次"发布到社交网络"在我们的网站上触发事件触发器,检查令牌是否已过期并要求用户重新授权。

第一个选项对用户来说更容易实现和更清洁。

那么,你是如何处理这种情况的?

谢谢!

2 个答案:

答案 0 :(得分:0)

我想我会尝试第一个选项:

如果有更多内容,我会试一试并更新此答案。

答案 1 :(得分:0)

如果用户实际上正在与您的网站进行互动,那么您应该获得新的access_token(请参阅下文)。如果您使用Facebook API执行与用户相关的离线任务,那么您应该存储access_token及其到期日期。然后,您需要处理过期的访问令牌,并要求用户再次与您的应用程序进行交互并更新您的记录。

您应该参考此document。你也应该阅读Extending Access Tokens document

  

步骤2.刷新长期用户访问令牌

     

在任何时候,都可以通过重复生成一个新的长期令牌   原始的auth flow ,获得一个新的短期令牌然后   进行与上述相同的交换。在某些情况下,这个更新   长期令牌可以与前一个令牌相同,但我们没有   保证这是真的,你的应用程序不应该依赖它。