2

ウェブサイトにニュースフォームがあります。このニュースメッセージを作成した後、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の自分のページにアクセスすると、新しいフィードはありません。私は何が間違っているのですか?一日中検索しましたが、動作しませんでした。よろしくお願いします。

4

1 に答える 1

0

ここで行っているのは、ユーザーのフィードに投稿することです。ユーザーアクセストークンを使用しています。使用したいのはページアクセストークンです。

ページに代わってタスクを実行するには、manage_pages 権限が必要です。

さらに、公式のPHP SDKの使用を検討する必要があります。これにより、FacebookのAPIへのアクセスがはるかに簡単になり、読みやすさが向上します。

于 2012-07-22T21:14:29.250 に答える