15

我在 Facebook 有一个商业页面(在 Facebook 白话中称为粉丝页面)。

post to that Page每当用户对我的应用执行特定操作时,我都想这样做。我想以页面本身而不是用户的身份发布(即来自我的个人帐户)。该帖子将来自我的外部服务器(我正在使用restFB)。

我已经完成了为我的个人帐户授权manage_pages页面的适当权限的步骤。我还获得了该页面的访问令牌。我什至可以按照自己的意愿将其发布到该页面。问题是我(通过他们的开发人员工具图形浏览器)获得的令牌有一个小时的到期时间。我需要它持续更长的时间,最好是永远。

我浏览了互联网,包括 SO 的答案,大多数帖子都指向可怕的 FB 文档,或者模糊地提到将我的外部应用程序连接到 facebook 应用程序并通过它发布。我试图完成这项工作,但坦率地说,我对整个过程感到困惑(例如,什么是回调地址?)。

无论如何,我很想看到用简单的英语逐步说明getting a long lasting access token,我可以用这些说明从一个应用程序发布到 Facebook 粉丝页面。

请不要参考 FB 文档。这很糟糕。我至少经历过十几次。

谢谢你。

4

2 回答 2

30

您可以按照以下步骤为您的粉丝页面获取永不过期的令牌:

  1. 首先,您需要获得长期存在的用户访问令牌(在 2 个月内到期)。为此,请拨打以下电话:

    GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}
    

    更多细节在这里。如果您对此有任何困难,请告诉我。

  2. 使用您在上述步骤中获得的令牌(不是普通令牌,这是这里的主要区别)为您的页面获取永不过期的访问令牌:

    $facebook->api("/PAGE_ID?fields=access_token");
    

所以这个概念是,要获得长期存在的页面令牌,您应该在进行调用时使用长期存在的用户令牌。

于 2013-08-19T20:19:58.900 回答
14

@Shadowfax 完全正确。只是为了完成工作流程:

  1. manage_pages使用 facebook 登录和权限获取短期用户 access_token 。
  2. 将此短期用户 access_token 发送到您的服务器
  3. 从服务器发出@Shadowfax 请求:

    GET /oauth/access_token? grant_type=fb_exchange_token&client_id={your-app-id}& client_secret={your-app-secret}&fb_exchange_token={short-lived-user-access_token}

    与主机graph.facebook.com和端口443

    您必须从服务器发出此请求,因为它包含您的应用程序密钥。

  4. 在服务器上,您现在可以通过用这个长期版本替换用户 access_token 来查询 facebook

  5. 从服务器,使用您的长期用户 access_token 获取页面 access_token,或者通过查询用户帐户:

    GET /{user-id}/accounts?access_token={long-live-token}

    您将获得所有用户的页面及其 id 和 access_token。

    或者,如果您已经知道其 page_id,则可以直接查询特定页面

    GET /{page-id}/?fields=access_token&access_token={long-live-token}

正如@Shadowfax 所说,只要用户(您)不撤销您的应用权限,此页面的长效令牌将永远存在。

于 2013-08-23T09:55:13.187 回答