48

我做了很多搜索,我发现过时的教程不起作用......

我有一个用 PHP 制作的网站,当我在管理区域提交特定表单时,我想发布到我的 Facebook“粉丝页面”

没有可用的 RSS,那么您有任何使用 php sdk 直接发布到 Facebook 粉丝页面(不是用户墙)的示例吗?

谢谢!

4

4 回答 4

92

最后,经过大量测试,它可以在没有 PHP SDK 的情况下工作。这是分步指南:

1.获取权限和页面令牌

转到https://developers.facebook.com/tools/explorer/并从左侧的第一个下拉菜单中选择您的应用程序。

点击“Get access token”按钮,在“Select Permissions”窗口,点击“Extended Permissions”,勾选manage_pages和publish_stream,点击“Get Access Token”蓝色按钮。

在此步骤中,您可能会被要求授予您的应用访问您的 Facebook 帐户的权限,请接受。

接下来,单击“GET”下拉列表旁边的文本字段末尾,并将数字替换为:我/帐户,然后单击此文本字段旁边的蓝色按钮。

您将获得所有页面的令牌,包括您的应用页面。在列表中找到您的页面名称,将如下所示:“名称”:“您的页面名称”

当你找到你的页面时,复制页面的访问令牌(会很长),看起来像这样:"access_token": "XXXXXXXX"。同时复制页面的 id:“ id”:“XXXXX”

这就是这一步的全部内容,我们现在可以开始编码了。

2. 通过 PHP 发布到您的页面墙

首先,对于这个脚本,您需要一个支持 curl 的服务器。

我们开始定义页面访问令牌和我们在第一步中获得的页面 id 的 PHP 文档:

<?php
$page_access_token = 'XXXXXXX';
$page_id = 'YYYYYYYY';

之后,我们创建一个包含信息的数组以发布到我们的页面墙:

$data['picture'] = "http://www.example.com/image.jpg";
$data['link'] = "http://www.example.com/";
$data['message'] = "Your message";
$data['caption'] = "Caption";
$data['description'] = "Description";

当然,您可以使用https://developers.facebook.com/docs/reference/api/post/中描述的任何其他 post 参数,如果您不需要上面的一个或多个参数,您可以简单地删除它。

好的,此时我们将访问令牌添加到数组中:

$data['access_token'] = $page_access_token;

我们设置我们的帖子 URL,在我们的页面中发布:

$post_url = 'https://graph.facebook.com/'.$page_id.'/feed';

最后一步,我们将使用 curl 在我们的页面墙上发布我们的消息:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
?>

之后,我们可以保存我们的 PHP 文档,并尝试执行它。该帖子可能会出现在我们的 Facebook 页面中。

希望这段代码能帮助其他有同样问题的人!

于 2011-10-20T08:34:55.370 回答
5

您可以使用 Facebook 访问令牌调试器测试令牌

API v.2.5 的工作解决方案

  1. 获取code作为app_id参数response_uri

https://www.facebook.com/dialog/oauth?client_id=".$app_id."&redirect_uri=".$response_uri."&response_type=code&scope=manage_pages,publish_pages

  1. 获取access_token基于codeapp_idapp_secret作为结果response_uri

https://graph.facebook.com/oauth/access_token?grant_type=authorization_code&client_id=".$app_id."&client_secret=".$app_secret."&code=".$code."&redirect_uri=".$response_uri

  1. 获得永不过期page_access_tokenpage_id基于access_token

https://graph.facebook.com/v2.5/".$page_id."?fields=access_token&access_token=".$access_token

于 2016-03-01T09:56:31.473 回答
2

作为 nmarti 答案的补充。适用于 API v.2.4。

如果你不想去 Facebook API 控制台,而是做 API 调用,这里有一些说明。

首先,您必须拥有 Facebook 用户,在您要发布的页面上作为管理员,您还必须创建 Facebook 应用才能继续。

  1. 做登录请求,获取用户令牌:

https://www.facebook.com/dialog/oauth?client_id=%app-id%&redirect_uri=%your-site-url%&response_type=token&scope=manage_pages,publish_pages

作为回应,你应该得到 %user-token%,保存它,你将在下一步中需要它。

阅读更多

  1. 要求长寿令牌:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=%app-id%&client_secret=%app-secret%&fb_exchange_token=%user-token%

现在您将拥有 %long-lived-token%,这是获取长期页面令牌所必需的。

阅读更多

  1. 现在,获取您的 Facebook 页面列表,

https://graph.facebook.com/v2.4/%page-admin-user-id%/accounts/?access_token=%long-lived-token%

在列表中找到您的页面和页面令牌,现在您可以使用 nmarti 示例继续发布到页面。

Facebook还说:

生成的页面访问令牌将没有任何到期时间。

阅读更多

于 2015-09-09T04:24:04.510 回答
0

这是您正在寻找的资源。向下滚动Page Login并从那里阅读。您必须为您的页面获取访问令牌,然后在发布时使用该令牌。这是假设您希望您的帖子“从页面”显示。IE - 就像你是页面一样发布。

实际调用 graph api 来创建一个 post 对象,以及如何做,可以在facebook 文档的这个 url中找到。

于 2011-10-19T09:17:00.970 回答