从服务器获取用于发布到 Facebook 粉丝页面的持久令牌的步骤是啥

Posted

技术标签:

【中文标题】从服务器获取用于发布到 Facebook 粉丝页面的持久令牌的步骤是啥【英文标题】:What are the Steps to getting a Long Lasting Token For Posting To a Facebook Fan Page from a Server从服务器获取用于发布到 Facebook 粉丝页面的持久令牌的步骤是什么 【发布时间】:2013-08-18 04:20:54 【问题描述】:

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

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

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

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

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

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

谢谢。

【问题讨论】:

【参考方案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
    

    更多详情here。如果您对此有任何困难,请告诉我。

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

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

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

【讨论】:

我想我对 app-id 和 app-secret 感到困惑。如何为页面设置 Facebook 应用程序?脸书应用程序有什么作用?是不是为了更新粉丝专页就需要一个? 是的,您需要一个 facebook 应用程序。没有这样的facebook app for the page,只有简单的 facebook 应用程序,您可以从这里创建:developers.facebook.com/apps 谢谢。我最终得到了你的建议和 Sebastian C。我希望我能给你们两个奖励。 是否有机会创建新的 FB 应用程序并将其加入我们当前的 FB 页面(我们的 FB 页面有成千上万的粉丝,所以我们不能从零开始)。 在哪里可以发出 GET 请求?【参考方案2】:

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

    通过 facebook 登录和 manage_pages 权限获取短期用户 access_token。 将此短期用户 access_token 发送到您的服务器

    从服务器发出@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

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

    从服务器,您现在可以通过将用户 access_token 替换为此长寿命版本来查询 facebook

    从服务器,使用您的长寿命用户 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 所说,只要用户(您)不撤销您的应用权限,此页面长效令牌将永远存在。

【讨论】:

我猜有些错字:2 个月*。我猜不需要更新长期令牌,因为 OP 需要粉丝页面令牌,该令牌将来永远不会过期。 (只是一次查询) 感谢您的错字!我猜他会需要“admin_user”的长寿命 user_token,你不觉得吗? 是的,但只是一次。获取粉丝页面令牌是一次性查询 你说得对,我以前从未见过此更新。再次感谢! 在哪里可以发送 GET 请求?我可以使用developers.facebook.com/tools/explorer 上的表格吗?

以上是关于从服务器获取用于发布到 Facebook 粉丝页面的持久令牌的步骤是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 iOS 的 Facebook 新闻提要(粉丝页面)? [关闭]

在 iOS Facebook SDK 3.0 上作为粉丝页面发布

通过 API 将 Facebook 应用程序添加到粉丝页面

网站上的 Facebook 粉丝页面提要(受年龄保护)

Facebook:当用户点击粉丝页面上的“喜欢”按钮时获取

以用户身份将照片发布到 Facebook 粉丝页面。 iOS Facebook SDK 3.1