Facebook页面访问令牌 - 这些是否过期?

时间:2011-10-08 11:05:39

标签: facebook facebook-graph-api access-token facebook-page

我正在构建一个应用程序,允许用户管理他们的Facebook粉丝页面。这需要以下两个访问令牌:

  1. 用户访问令牌
  2. 页面访问令牌
  3. 我非常熟悉用户访问令牌,但不熟悉页面访问令牌。

    有人知道页面访问令牌有效期有多长?我在Facebook网站上找到的所有内容都是this succinct paragraph,它没有提及任何有关它到期的信息。

    我可以假设,如果我使用offline_access权限请求用户访问令牌,则页面访问令牌也将无限期地持续(除非用户更改其密码或手动取消授权我的应用程序)?

    我问,因为我想知道我应该多久查询一次Facebook Graph API并获取页面访问令牌。我应该在用户注册时简单地请求一次吗?或者,如果他们不断更改,我应该为每个API调用请求一个吗?后者显然更加沉重!

8 个答案:

答案 0 :(得分:42)

当访问令牌因为生成页面令牌的用户而到期时,页面令牌将过期。 编辑6.28.2013 :如果您extend the user access token并为该用户获取新的page access token,则该页面令牌不会过期,除非用户取消授权您的应用。

现已弃用离线访问,但您可以将访问令牌延长60天。如果您扩展用户的访问令牌,那么从该用户帐户生成的页面令牌也将延长其匹配期限将不会过期(编辑6.28.2013)。页面令牌的值可能会在扩展后发生变化,因此请务必在扩展用户令牌后从用户的/accounts图表连接中获取新的页面令牌。

您可以每天继续扩展这些访问令牌一次。因此,您应该每天重新生成用户与您的应用互动的访问令牌。

请参阅 https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens https://developers.facebook.com/docs/facebook-login/access-tokens/#extending https://developers.facebook.com/docs/facebook-login/
https://developers.facebook.com/roadmap/offline-access-removal/ https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/

答案 1 :(得分:12)

您可以扩展页面访问令牌,使其永不过期。文档有点混乱,但以下页面有相关信息,您显然需要成为该页面的管理员。在第二个链接上密切关注方案4和5。

https://developers.facebook.com/docs/reference/api/page/#page_access_tokens https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token

使用图形资源管理器从Facebook检索令牌很简单。图形资源管理器还允许您调试将列出到期日期的令牌,因此您可以验证它永不过期。图表资源管理器:https://developers.facebook.com/tools/explorer

单击“获取访问令牌”按钮以检索您的令牌。将您的ID保存在查询栏中,只需将/ accounts附加到您的ID,以便它看起来像这样:/123456789101112/accounts。确保它是GET请求(查询栏左侧的下拉列表)。

这将检索您配置为使用的所有页面。然后,您需要发出GET请求:

/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN 

您的APP_ID和APP_SECRET可以在您的应用程序管理设置中找到。使用您的个人访问令牌作为最终参数(EXISTING_ACCESS_TOKEN)。这将返回60天的个人访问令牌。将此令牌复制到查询栏上方的访问令牌栏中。现在向USER_ID / accounts发出GET请求,就像我们在开始时做的那样。这将再次返回您配置为使用的页面列表。

但是这次与页面一起列出的页面标记不会过期。您可以通过将页面标记复制到Access Token栏中,然后单击Debug按钮来检查这一点。这将为您提供有关该访问令牌的详细信息,包括到期时间,在这种情况下应该永远不会。

更新

我还发现Facebook的图形浏览器有时会与用户上下文混淆,并且可能在任何时候都不可靠。替代方案为FiddlerPostman

答案 2 :(得分:4)

我不确定facebook是否进行了更改以修复这些错误,但似乎一旦为用户授予了页面访问令牌,用户访问令牌就不会过期。根据我的测试,流程如下:

  1. 请求的用户访问令牌 - >发布60天用户令牌
  2. 请求的网页访问令牌 - >发布的页面访问令牌永不过期,初始用户访问令牌也升级为永不过期。
  3. 希望这能解决一些混乱局面。我已经在我们的应用程序中对许多不同的用户进行了测试,每次都看到相同的内容。

    如果从未请求过页面访问令牌,原始用户访问令牌将在60天后过期。

答案 3 :(得分:2)

Facebook页面访问令牌与用户访问令牌非常相似,除了“它模仿用户”作为页面的管理员并允许管理它[需要manage_page权限]。

如果对应用授予了Offline_access权限,则页面access_token将不会过期(除非用户更改其密码或手动取消对该应用的授权)

使用以下链接检查已颁发的访问令牌的详细信息。

https://developers.facebook.com/tools/debug/

答案 4 :(得分:1)

https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token 根据这一点,当您获得短时间访问令牌并将其扩展为长期访问令牌时,这将不会仅针对页面访问令牌进行扩展。请参阅方案5:页面访问令牌

答案 5 :(得分:1)

Facebook关于该问题的文档(长期页面访问令牌)与现实中发生的情况不符。该文档声称通过扩展/长期用户访问令牌获取的页面访问令牌永远不会过期。但是,实际上,这些页面访问令牌将在60天后到期。

查看Facebook错误:http://developers.facebook.com/bugs/461517520524921

答案 6 :(得分:1)

  • 默认页面访问令牌是短暂的,因此它们会在1或2小时后过期。 如果你想让它持续更长时间,你需要将短期延长到长期访问令牌,这样它将持续大约2个月。
  • 现已弃用权限offline_access
  • 当用户更改为密码时,访问令牌不会过期。

在另一个问题中,我解释了How to extend Page access token

答案 7 :(得分:0)

当用户的访问令牌过期时,页面访问令牌已过期。您可以将用户访问令牌延长至最多60天,以使页面访问令牌持续很长时间。

查看 my blog ,然后按照获取扩展访问令牌并获取粉丝页面访问令牌的分步说明进行操作。