以页面管理员身份使用 PHP 发布到 Facebook 页面


Post to Facebook Page with PHP as Page Admin

首先,我知道有一百万个类似的问题,但它们要么已经过时(Facebook已更改,说明不再有效),要么没有解释如何具体做我所问的。

我正在尝试在Facebook上注册一个应用程序,以便我可以自动发布到公司的Facebook页面,我是该页面的管理员。

正在尝试通过PHP来做到这一点,我有丰富的经验(PHP,而不是Facebook API)。

到目前为止,我已经注册为Facebook开发人员,制作了一个Facebook应用程序,获得了appID和秘密词,并从Github下载了facebook-php-sdk。我试图遵循几个教程,但Facebook开发人员/应用程序页面都已更改,因此入侵现在无效。

我想做的只是能够通过PHP从服务器自动发布到我的页面墙上,就好像我自己作为页面管理员发布了状态更新一样。我不明白这如何或为什么如此困难。

Facebook应用程序页面有一百万个我从未听说过的设置,似乎没有相关,然后没有任何信息可以提供任何方向来做我想做的事情。

这大约是我所能达到的,我已经碰壁了。不知道下一步该怎么做。Facebook一直问我"选择你的应用程序如何与Facebook集成",但他们的选项似乎不包括我想要的东西,这只是在我自己的页面上发布。我似乎还没有真正能够使用该应用程序,因为它坚持各种设置,例如我不明白的"画布 URL"等,然后我显然需要设置权限,但我认为也没有办法做到这一点。

我该怎么办?

设置应用

您将需要对在您的页面上至少具有内容创建者权限的用户进行身份验证。因此,您需要选择"具有Facebook登录的网站"并输入您的网站网址。您还必须输入域(没有协议的网站网址)在测试时将其保持在沙盒模式,您可以稍后对其进行编辑。

您真的不必担心其他设置,因为询问的权限可以直接添加到您的 php 代码中。

"在线"访问

要记录并直接发布到Facebook,您需要检索访问令牌

获取访问令牌

以下是基本内容:

  • 让用户登录并允许具有适当权限(manage_pages、publish_stream)的应用(如果他尚未登录)
  • 检索用户访问令牌
  • 使用用户访问令牌查询/me/accounts 以获取页面 ID 和访问令牌

然后,您所要做的就是使用id和访问令牌进行API调用,以在Facebook上发布

"离线"访问

为了无需登录即可发布(如果您不是唯一发布的人,则很有用),您需要一个永久扩展令牌。因此,您基本上应该有一个单独的脚本,您将运行一次该脚本来检索该扩展令牌并存储它。

获取扩展访问令牌

为了能够在没有用户登录的情况下发布,您需要页面的永久访问令牌。

以下是基本内容:

  • 让用户允许具有适当权限的应用(manage_pages、publish_stream)
  • 检索用户访问令牌
  • 更改扩展用户访问令牌的用户访问令牌

这是我如何完成此步骤(您也可以使用 curl)

$token_url = "https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUT_APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=OLD_TOKEN";
$accessToken = @file_get_contents($token_url);

然后

  • 使用用户扩展访问令牌查询/me/帐户以获取页面
  • 更改扩展访问令牌的页面访问令牌(与以上)

(根据文档,最后一步不是必需的,因为当您使用扩展用户令牌查询/me/accounts 时,您应该获得扩展页面令牌,但在我的情况下它不起作用)

并且,您将获得一个永久访问令牌,该令牌仅在用户更改密码或禁止应用时过期。您所要做的就是将其与页面的ID一起存储,并在需要API调用才能发布到Facebook的任何地方检索它。

php sdk有很好的文档记录,所以你不应该遇到谷歌搜索无法解决的任何问题。查找 2012 年 9 月之后的线程 流程没有改变,因为 php sdk 也没有太大变化。