8

我正在使用 python 处理 facebook 页面墙贴自动化

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

使用 access_token 和 message 作为 POST 参数

我通过选择我正在使用的应用程序并授予它管理我的页面的权限来使用图形 api 资源管理器生成访问令牌

最初 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

响应是一个 json 字符串,带有新的 access_token过期时间(以秒为单位)

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

现在可以延长有效期超过60天吗?

4

3 回答 3

4

您可以使用来自 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 中,放入实际的令牌值而不附加“access_token=”

于 2013-10-17T06:42:12.047 回答
4

短期和长期代币

用户访问令牌有两种形式:短期令牌和长期令牌。短期通证的寿命通常约为一两个小时,而长期通证的寿命通常约为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

于 2014-09-08T18:02:29.587 回答
0

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

扩展页面访问令牌

当应用程序使用 manage_pages 权限进行身份验证时,应用程序可以从页面管理员用户那里检索页面访问令牌。如果用于检索此页面访问令牌的用户访问令牌是短暂的,则页面访问令牌也将是短暂的。

要获得一个长期存在的页面访问令牌,请将用户访问令牌交换为一个长期存在的令牌,如上所述,然后请求页面访问令牌。生成的页面访问令牌将没有任何到期时间。

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

于 2013-01-17T14:46:07.543 回答