扩展 Facebook 页面访问令牌

Posted

技术标签:

【中文标题】扩展 Facebook 页面访问令牌【英文标题】:Extending Facebook Page Access Token 【发布时间】:2012-04-28 08:14:55 【问题描述】:

我需要扩展我的 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 有很多问题,但没有一个与页面相关的答案,idk 为什么 facebook 使用 api 那为什么......但是方式......

谢谢,

【问题讨论】:

我也希望facebook开发团队的人能提供适当的解决方案,因为我们现在面临同样的问题。 这里也一样。 FB API 就像大海捞针。 【参考方案1】:

场景 5:页面访问令牌

当用户授予应用程序 manage_pages 权限时,应用程序能够 获取用户管理的页面的页面访问令牌 查询 [User ID]/accounts Graph API 端点。随着迁移 启用,当使用短期用户访问令牌查询此 端点,获得的页面访问令牌也是短暂的。

将短期用户访问令牌交换为长期访问 使用前面解释的端点和步骤的令牌。通过使用 长期用户访问令牌,查询 [User ID]/accounts 端点 现在将为以下页面提供不会过期的页面访问令牌 用户管理。这也适用于使用非过期查询 通过已弃用的 offline_access 获取的用户访问令牌 权限。

https://developers.facebook.com/roadmap/offline-access-removal/

【讨论】:

【参考方案2】:

要获得长期访问令牌,您需要执行以下步骤:

    创建应用程序 创建页面(您的帐户需要是页面的“管理员”)

    将应用程序关联到页面(与将页面选项卡添加到页面时的方法相同)

    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_
    

    您现在可以使用Access Token Debugger 测试您的新访问令牌。

【讨论】:

问题:我的应用不是“标签应用”我如何关联它? @siniradam 使用此网址:facebook.com/add.php?api_key=*YOUR_APP_ID*&pages=1&page=*YOUR_PAGE_ID* 谢谢。顺便说一句,昨天我发现如果我向 /me/accounts 发送带有长期令牌的请求,列表返回带有长期令牌。我已经对此进行了测试:developers.facebook.com/tools/debug/access_token?q= 嘿@FR6 只是想对一步一步的表示感谢,过去两天我在这方面投入了相当多的时间,本指南非常有效。 如何将您的应用程序与页面关联?

以上是关于扩展 Facebook 页面访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

用于服务器拉取 FB 页面信息的持久 FB 访问令牌

从授权中获取 facebook 令牌访问权限

ASP.NET Web API 和身份与 Facebook 登录

自动进行Facebook页面访问令牌生成

为 Facebook 页面生成“永不过期”访问令牌

facebook:永久页面访问令牌?