在我的网站上的表格后,在脸书上发布一个提要


Post a feed on facebook after a form on my website

我的网站上有一个新闻表单。创建此新闻消息后,我想将其发布在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"}

我认为提交是成功的,但当我在脸书上访问我的页面时,没有新的订阅源。我做错了什么?我找了一整天都找不到工作。我感谢你的帮助。

您在这里所做的是将其发布在用户的提要上。您正在使用用户访问令牌。您要使用的是页面访问令牌。

您需要manage_pages权限才能代表页面执行任务。

此外,您应该考虑使用官方的PHP SDK,这将使访问Facebook的API更加容易,并提高可读性。