扩展Facebook页面访问令牌

16

我需要延长我的Facebook访问令牌,我正在调用以下代码:

https://graph.facebook.com/oauth/access_token? 
client_id={MY PAGE ID}&
client_secret={THE SECRET KEY OF MY APP}&
grant_type=fb_exchange_token&
fb_exchange_token={AN ACCESS TOKEN FOR MY PAGE}

我遇到了这个错误:

   "error": {
      "message": "Error validating application. Cannot get application info due to a system error.",
      "type": "OAuthException",
      "code": 101
   }

我经常看到许多与access_token相关的问题,但都没有相对于页面的答案,我不知道为什么Facebook会使用API,但这是他们的方式...

谢谢。


我也希望Facebook开发团队能够提供适当的解决方案,因为我们现在面临着同样的问题。 - Frank Myat Thu
这里也一样。FB API 就像是一堆干草。 - Čamo
2个回答

22

为了获得长期的访问令牌,您需要按照以下步骤进行:

  1. 创建一个应用程序
  2. 创建一个页面(您的帐户需要是该页面的“管理员”)
  3. 将应用程序与页面关联(方式与向页面添加页面选项卡时相同)

http://facebook.com/add.php?api_key=*YOUR_APP_ID*&pages=1&page=*YOUR_PAGE_ID*
  • 使用与您的应用程序相关联的"manage_pages"权限获取一个短暂的访问令牌。

  • https://graph.facebook.com/oauth/authorize?client_id=__APP_ID__&scope=manage_pages&redirect_uri=http://www.facebook.com/connect/login_success.html
    then
    https://graph.facebook.com/oauth/access_token?client_id=__APP_ID__&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=__APP_SECRET__&code=__CODE_FROM_PREVIOUS_REQUEST__
    
  • 通过使用Graph API Explorer并发送请求/me/accounts,您可以查看每个页面的访问令牌,只要您是管理员。问题在于这些访问令牌的有效期很短。

  • 将您的短期访问令牌转换为长期访问令牌(扩展访问令牌):

  • https://graph.facebook.com/oauth/access_token?client_id=_APP_ID_&client_secret=_APP_SECRET_&grant_type=fb_exchange_token&fb_exchange_token=_ACCESS_TOKEN_ON_STEP_4_
    
  • 您现在可以使用访问令牌调试器测试您的新访问令牌。


  • 我的应用程序不是“选项卡应用程序”,我该如何关联它? - siniradam
    谢谢。顺便说一下,昨天我发现如果我使用长期令牌向 /me/accounts 发送请求,列表会返回长期令牌。我已经用这个进行了测试:https://developers.facebook.com/tools/debug/access_token?q= - siniradam
    2
    嘿@FR6,只是想说谢谢你的逐步指导,我在过去的两天里花了很多时间在这个问题上,但这个指南完美地解决了我的问题。 - Andrew Bartel
    你如何将你的应用程序与一个页面关联起来? - chaostheory
    请注意,如果从第4步获得的令牌具有长期效力,则不需要执行第6步。如果是这样的话,从/me/accounts返回的令牌将永远不会过期(https://developers.facebook.com/docs/facebook-login/access-tokens/#extendingpagetokens)。 - Prinzhorn

    2
    场景5:页面访问令牌
    当用户授权应用程序进行manage_pages权限时,该应用程序可以通过查询[用户ID]/accounts Graph API端点来获取用户管理的页面的页面访问令牌。在启用迁移后,使用短期用户访问令牌查询此端点时,获取的页面访问令牌也是短期的。
    使用先前解释的端点和步骤将短期用户访问令牌换成长期访问令牌。通过使用长期用户访问令牌,查询[用户ID]/accounts端点现在将提供不会过期的页面访问令牌,以便用户管理页面。这也适用于使用已弃用的offline_access权限获得的不过期的用户访问令牌进行查询。
    更多信息请参见:https://developers.facebook.com/roadmap/offline-access-removal/

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接