【问题标题】:Extending expiry date of facebook access token in graph api beyond 2 months将图 api 中 facebook 访问令牌的到期日期延长 2 个月以上
【发布时间】:2013-01-17 14:38:53
【问题描述】:

我正在使用 python 进行 Facebook 页面墙贴自动化

我使用 facebook graph api post 在我拥有的 fb 页面上自动发帖 所以我通过向https://graph.facebook.com/mypagename/feed 发送 HTTP POST 请求来做到这一点

以 access_token 和 message 作为 POST 参数

我使用 graph api explorer 生成访问令牌,方法是选择我正在使用的应用并授予它管理我的页面的权限

最初使用 access_token 将在 2 小时后过期

为了将到期日期延长到 2 个月,我向此 url 发送 HTTP GET 请求

https://graph.facebook.com/oauth/access_token?client_id=my_app_id&client_secret=my_app_secret&grant_type=fb_exchange_token&fb_exchange_token=old_access_token

响应是一个带有 new access_tokenexpiry 时间(以秒为单位)的 json 字符串

新访问令牌的到期时间现在是 60 天。

现在是否可以将有效期延长至 60 天以上??

【问题讨论】:

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


    【解决方案1】:

    您可以使用 facebook 中的以下 api 将令牌寿命刷新到 60 天,并且就在令牌即将到期时,在 60 天内再次调用相同的 api 以将其寿命从该时间点刷新回 60 天令牌过期存在于 expires 参数中,其值以秒为单位

    将 CLIENT_ID 和 CLIENT_SECRET 替换为它们的实际值

    https://graph.facebook.com/oauth/access_token?client_id=&client_secret=&grant_type=fb_exchange_token&fb_exchange_token=

    在ACCESS_TOKEN中,放入实际token值,不附加“access_token=”

    【讨论】:

    • 在这个我得到Missing redirect_uri parameter.
    【解决方案2】:

    短期和长期代币

    用户访问令牌有两种形式:短期令牌和长期令牌。短期令牌的寿命通常约为 一两个小时,而长期令牌的寿命通常约为 60 天。您不应该依赖这些生命周期保持不变 - 生命周期可能会在没有警告的情况下更改或提前到期。在处理错误下查看更多信息。

    所以剩下的唯一方法是使用代码重新生成就在 60 天之前。

    向图形 api 发出 GET 请求并从 JSON 响应中过滤掉访问令牌

    在此处获取您的用户 ID http://findmyfacebookid.com/

    现在

    请求

    GET /{user-id}/accounts
    

    回应

    {
      "data": [
        {
          "category": "Product/service",
          "name": "Sample Page",
          "access_token": "{access-token}",
          "id": "1234567890",
          "perms": [
            "ADMINISTER",
            "EDIT_PROFILE",
            "CREATE_CONTENT",
            "MODERATE_CONTENT",
            "CREATE_ADS",
            "BASIC_ADMIN"
          ]
        }, 
    }
    

    https://developers.facebook.com/docs/facebook-login/access-tokens#pagetokens

    【讨论】:

      【解决方案3】:

      您的页面访问令牌实际上不会过期。请阅读documentation

      扩展页面访问令牌

      应用可以在页面管理员用户获取页面访问令牌时 使用 manage_pages 权限进行身份验证。如果用户访问 用于检索此页面访问令牌的令牌是短暂的,该页面 访问令牌也将是短暂的。

      要获得更长的页面访问令牌,请交换用户访问权限 一个长期存在的令牌,如上所述,然后请求页面访问 令牌。生成的页面访问令牌不会有任何过期时间。

      因此,如果您使用长期存在的用户访问令牌,您将获得无限的页面访问令牌。

      【讨论】:

      • 如果能用截图再解释一下就好了。我使用 Graph API Explorer 来获取访问令牌。下一步是什么?
      • 我检查了developers.facebook.com/docs/facebook-login/access-tokens/…,他们说寿命更长的页面访问令牌将在 60 天后过期。你检查了吗?
      • 它不再像这样工作了。长期令牌中的数据访问持续 3 个月。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2016-04-27
      • 2012-02-28
      • 2015-06-09
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多