Facebook:自动刷新长期访问令牌

时间:2014-07-15 19:34:34

标签: facebook facebook-graph-api oauth-2.0 facebook-oauth

我为我的应用程序的用户存储了长期访问令牌,这些用户已将Facebook帐户与其相关联。自 offline_access 令牌消亡以来,这些长寿命令牌的有效期约为60天。"但是,当用户与Facebook交互时,他们可以自我刷新。根据{{​​3}}:

  

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

我想知道的是向Facebook服务器提出请求的内容。用户是否必须登录Facebook网站,移动应用程序或在某处使用“赞”按钮?或者我的应用程序代表用户提出请求也是如此?

此外,当令牌刷新时,它们会再刷新60天吗?或者他们刷新的持续时间较短?

我无法在文档或此处提出的其他问题中找到这些具体答案,所以提前感谢任何可能有更多详细信息的人。

2 个答案:

答案 0 :(得分:1)

您粘贴的那一行很重要: Native mobile applications using Facebook's SDKs will get long-lived access tokens, good for about 60 days

您提取的部分仅指使用Facebook SDK的iOS和Android应用程序 - SDK进行API调用以扩展令牌,该令牌仅适用于SDK和本机移动SDK生成的令牌 -

其他应用程序(例如facebook.com上的网站,应用程序)需要使用文档中其他地方记录的登录流程,并要求用户在浏览器中登录Facebook

答案 1 :(得分:1)

每次使用Facebook SDK进行任何Graph API调用时,令牌都会被刷新。您可以在其源代码中看到它,在 AccessTokenManager 中,有函数 extendAccessTokenIfNeeded(),该函数在 executeConnectionAndWait()中的> GraphRequest

您还可以通过以下方式手动刷新令牌:

AccessToken.refreshCurrentAccessTokenAsync();

我发现了一个例外。仅sso令牌可以刷新,这意味着用户是否通过facebook应用程序登录到您的应用程序。如果用户通过浏览器登录,令牌将保持不变。