0

我正在尝试设置我的 WP 网站,以便在发布帖子时将其发送到 Facebook 页面。不幸的是,我无法让它发挥作用。下面的代码被包括在内,但似乎什么也没做(可能 FB 正在发回一个错误,但 WP 没有显示它)。

当我尝试访问我希望发布的页面的提要(下)时,我被告知我没有正确的权限(也在下)

https://graph.facebook.com/163797013684290/feed

/** The error I recieve when visiting the above page */
{
   "error": {
      "message": "An access token is required to request this resource.",
      "type": "OAuthException",
      "code": 104
   }
}

到目前为止,我已经完成了这些设置 -

  1. 访问Graph API Explorer
  2. 从下拉菜单中选择我希望发布到我的主页的应用程序
  3. 单击“获取访问令牌”
  4. 选择了“manage_pages”权限
  5. 重新登录,授予应用访问我的页面的权限
  6. 创建了以下脚本,包含已生成的访问令牌。

请有人帮忙,因为我不知道从这里去哪里。谢谢。


class Publish_To_Facebook{

    /**
     * The ID of the Page to edit
     *
     * @var string
     * @access private
     */
    private $page_id = '163797013684290';   

    /**
     * The Page access token given to the application set up to post to the Page
     *
     * @var string
     * @access private
     */
    private $page_access_token = 'my_access_token'; 

    /**
     * The back-end service for Page's wall
     *
     * @var string
     * @access private
     */
    private $post_url = '';

    /**
     * Constructor
     */
    public function __constructor(){

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

    }

    /**
     * Manages the POST message to post an update on a page wall
     * 
     * @param array $data
     * @return string the back-end response
     */
    public function message($data){

        /** Grab the $page_access_token */
        $data['access_token'] = $this->page_access_token;

        /** Initiate CURL */
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $this->post_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        /** Execute and close CURL */
        $return = curl_exec($ch);
        curl_close($ch);

        return $return;

    }
}

$to_post = array(
    'message'     => 'The status header', 
    'link'        => 'http://theurltopoint.to', 
    'picture'     => 'http://thepicturetoinclude.jpg',
    'name'        => 'Name of the picture, shown just above it', 
    'description' => 'Full description explaining whether the header or the picture'
);
$facebook = new Publish_To_Facebook();
$facebook->message($to_post);
4

5 回答 5

2

以下行没有提及您的$page_access_token...

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

你需要类似下面的东西......

$this->post_url = 'https://graph.facebook.com/'.$this->page_id.'/feed?access_token='.$this->page_access_token;
于 2013-01-17T16:40:37.687 回答
1

我认为你应该看看这个页面来修复它。它描述了整个过程。

作为页面登录

以下是有关页面访问令牌的文档中的一些信息:

页面访问令牌

要以 Page 而非当前用户的身份执行以下操作,您必须使用 Page 的访问令牌,而不是通常用于读取 Graph API 对象的用户访问令牌。可以通过向具有 manage_pages 权限的 /USER_ID/accounts 发出 HTTP GET 来检索此访问令牌。这将返回用户具有管理权限的页面列表(包括应用程序配置页面),以及这些页面的 access_tokens。或者,您可以通过向具有 manage_pages 权限的 /PAGE_ID?fields=access_token 发出 HTTP GET 来获取单个特定页面的页面访问令牌,如上所述。除非另有说明,否则发布到页面还需要 publish_stream 权限。

来源

于 2013-01-17T16:50:00.553 回答
0

作为替代方案,您可以使用 twitterfeed.com 自动将您的帖子提交到 Facebook,并提供其他几个选项。

于 2013-01-17T16:43:40.390 回答
0

您从 Graph API 浏览器获得的access_token不是永久的。您需要至少每两个月刷新一次,或者在您退出 Facebook 的任何时候刷新。

与其自己从头开始编写代码,不如使用 Facebook PHP SDK?您将可以使用应用的 ID 和密码永久访问您的页面。

于 2013-01-17T18:18:43.427 回答
0

我个人会说放弃 curl 并使用 PHP SDK。为您的网站分配自己的应用程序密码等,并将它们链接到您的代码。

现在,您要问自己的下一件事是,我是要复制 facebook 上的文章,还是要链接到 facebook 上的文章?

就个人而言,我会选择链接选项,在这种情况下,您想发布到 LINK 流。

如果您作为链接发布,那么它将看起来像一个正确的链接帖子,显示您的帖子的缩略图和摘要。您可以使用 OG 元标记调整那里显示的内容。

您可以将整篇文章直接发布到提要中,但这真的是您想要的吗?

这个答案在理论上很长,在代码上很短。如果您需要更多帮助,请根据我上面所说的具体说明您想要什么。

于 2013-01-18T13:04:34.417 回答