扩展长期(60天)用户访问令牌

时间:2016-10-05 20:15:44

标签: facebook-graph-api facebook-login

我正在使用FB登录,将访问令牌转换为服务器上的长期访问令牌,然后将其存储在数据库中。根据文档here,使用此访问令牌发出请求应该使其有效期为60天。

我每隔4小时向每个用户(使用access_token,client_id,client_secret)提供/ [userID] / picture请求。但是,令牌仍然表示它们将在创建后的60天内到期。

我也尝试过以下代码,就像我在其他StackOverflow答案中看到的那样,但它生成的新令牌不会延长60天。这些答案链接到this page(死链接)。

https://graph.facebook.com/v2.x/oauth/access_token?             
  client_id=APP_ID&
  client_secret=APP_SECRET&
  grant_type=fb_exchange_token&
  fb_exchange_token=EXISTING_ACCESS_TOKEN 

TLDR :如何在用户不必再次登录的情况下扩展长期令牌?有可能吗?

2 个答案:

答案 0 :(得分:0)

来自https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

  

刷新长期令牌

     

即使是长期存取的令牌也会最终到期。在任何时候,您都可以通过将此人发送回您的Web应用程序使用的登录流程来生成新的长期令牌 - 请注意,此人实际上不需要再次登录,他们已经授权您的应用程序,因此他们将立即使用刷新的令牌从登录流程重定向回您的应用程序 - 此人看起来如何根据您使用的登录流程类型而有所不同,例如,如果您使用的是JavaScript SDK,则会发生在在后台,如果您使用服务器端流程,浏览器将快速重定向到登录对话框,然后自动立即再次返回到您的应用程序。

     

完成上述操作后,您将获得一个新的短期令牌,然后您需要为上述长期令牌执行相同的交换。

所以看起来不可能在不获得新的短期令牌的情况下续订长期令牌(这需要用户互动)

请求时自动续订仅适用于原生移动应用(Android / iOS):

  

使用Facebook SDK的原生移动应用程序将获得长期访问令牌,大约可以使用60天。当使用您的应用程序的人向Facebook的服务器发出请求时,这些令牌将每天刷新一次。如果没有请求,令牌将在大约60天后过期,并且该人必须再次通过登录流程才能获得新令牌。

答案 1 :(得分:-1)

您所要做的就是转HERE并粘贴短令牌,然后按扩展访问令牌按钮,新的令牌将<强>产生即可。 您必须使用新令牌而不是旧版,因为短期令牌

希望它有所帮助^ _ ^

相关问题