通过PHP发布到Facebook粉丝页面的简单示例?

时间:2011-10-19 08:42:11

标签: php facebook facebook-graph-api facebook-wall facebook-fan-page

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

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

没有可用的RSS,所以你有任何使用php sdk直接发布到Facebook粉丝页面(不是用户墙)的例子吗?

谢谢!

4 个答案:

答案 0 :(得分:80)

最后,经过大量测试后,它没有PHP SDK。这是一步一步的指南:

<强> 1。获取权限和页面令牌

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

单击“获取访问令牌”按钮,在“选择权限”窗口中,单击“扩展权限”并检查manage_pages和publish_stream,然后单击“获取访问令牌”蓝色按钮。

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

接下来,点击“GET”下拉列表旁边的文字字段末尾,然后替换:me / accounts的数字,然后点击此文字字段旁边的蓝色按钮。

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

找到页面后,复制页面的访问令牌(会很长),如下所示:“access_token”:“XXXXXXXX”。同时复制页面的ID:“ id”:“XXXXX”

这就是这一步,我们现在可以开始编码了。

<强> 2。通过PHP发布到您的页面墙

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

我们启动定义页面访问令牌的PHP文档以及我们在第1步中获得的页面ID:

<?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/中描述的任何其他帖子参数,如果您不需要上述一个或多个参数,则只需删除它即可。

好的,此时我们向数组添加了访问令牌:

$data['access_token'] = $page_access_token;

我们设置了帖子网址,在我们的页面中发布:

$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页面中。

希望此代码能够帮助遇到同样问题的其他人!

答案 1 :(得分:4)

您可以使用测试令牌 Facebook Access Token Debugger

API v.2.5的工作解决方案

  1. 获取code的{​​{1}}作为app_id
  2. 的参数
      

    response_uri

    1. 根据https://www.facebook.com/dialog/oauth?client_id=".$app_id."&redirect_uri=".$response_uri."&response_type=code&scope=manage_pages,publish_pages
    2. 的结果,根据access_tokencodeapp_id获取app_secret
        

      response_uri

      1. 根据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
      2. page_access_token永远不会过期page_id
          

        access_token

答案 2 :(得分:2)

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

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

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

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

    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%,保存它,您将在下一步中使用。

    Read More

    1. 要求长寿令牌:
    2.   

      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%,这是获取长期页面令牌所必需的。

      Read More

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

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

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

        Facebook也说:

          

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

        Read More

答案 3 :(得分:0)

Here is the resource you are looking for。向下滚动到Page Login并从那里阅读。 您必须获取页面的访问令牌,然后在发布时使用该令牌。这假设您希望您的帖子“从页面”显示。 IE - 发布就像你是页面一样。

实际调用图形api来创建一个post对象,以及如何操作,可以在facebook文档的this url找到。