在我的网站上的表格后在Facebook上发布一个Feed

时间:2012-07-22 21:06:54

标签: php facebook curl feed

我的网站上有新闻表格。创建此新闻消息后,我想在Facebook上发布。我尝试了很多东西,但没有任何工作。这是我的班级:

<?php

class Facebook {

    const FACEBOOK_APP_ID           = 'MY_APP_ID';

    const FACEBOOK_APP_SECRET       = 'MY_APP_SECRET';

    const FACEBOOK_ACCESS_TOKEN_URI = 'https://graph.facebook.com/oauth/access_token';

    const FACEBOOK_FEED_URI         = 'https://graph.facebook.com/app/feed';

    private function getAccessToken() {
        $params = array(
            'client_id'     => self::FACEBOOK_APP_ID,
            'client_secret' => self::FACEBOOK_APP_SECRET,
            'grant_type'    => 'client_credentials',
        );

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, self::FACEBOOK_ACCESS_TOKEN_URI);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

        $data = curl_exec($ch);

        curl_close($ch);

        return substr($data, strpos($data, '=') + 1);
    }

    public function sendFeed() {
        $params =  array(
            'access_token'  => $this->getAccessToken(),
            'message'   => $message,
            'name'      => $name,
            'link'      => $url,
            'description'   => $description,
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, self::FACEBOOK_FEED_URI);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

        $data = curl_exec($ch);

        curl_close ($ch);

        return $data;
    }

}

如果我调用方法sendFeed(),它将返回以下内容:

{"id":"404322099626551_404397542952340"}

我认为提交是成功的,但是当我在Facebook上访问我的页面时,没有新的提要。我究竟做错了什么?我搜索了整整一天,无法让它工作。我感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您在此处所做的是将其发布在您用户的Feed上。您正在使用用户访问令牌。您想要使用的是page access token

您需要manage_pages permission代表您的网页执行任务。

此外,您应该考虑使用官方PHP SDK,这样可以更轻松地访问Facebook的API并提高可读性。