Facebookのgraph apiをphpで使う

Pocket

Facebook APIをPHP SDKを使って色々する方法
Facebookでdeveloper登録して、
https://developers.facebook.com/
からアプリを登録する。
登録したアプリの”App ID/API Key”と”アプリの秘訣”を記録する。
sdkをダウンロードして設置する。
phpファイルから、/src/functions.phpを読み込んで、色々と試してみる。

require_once( dirname( __FILE__ ) . '/src/functions.php' );
$fbAppId = YOUR APP ID;
$fbSecret = YOUR SECRET;
if($fbAppId != '' && $fbAppId != '')
{
    $facebook = new Facebook(array(
      'appId'  => $fbAppId,
      'secret' => $fbSecret,
      'cookie' => true,
    ));
    try{
        $uid = $facebook->getUser();
        $facebook_me = $facebook->api('/me');
    }catch(FacebookApiException $e){
        echo $e->getMessage();
    }
}

これでprint_r($facebook_me)すると、facebookに登録されている情報が色々と表示される。
基本的にこれの使い回しでgraph apiを使いこなす。
ミソは、 $facebook->api()の使い方だが、この中身をfacebook.phpで見てみると

public function api() {
    $args = func_get_args();
    if (is_array($args[0])) {
        return $this->_restserver($args[0]);
    } else {
        return call_user_func_array(array($this, '_graph'), $args);
    }
}

とあり、さらに

  protected function _graph($path, $method = 'GET', $params = array()) {
(略)
  }

とあるので、1個目でpath (‘/me’など)、2個目でmethod (post, deleteなど)を指定し、paramsはapiのreferenceを参照して必要なものを入れる。
アプリでいくつか権限を要求する場合は

$loginUrl = $facebook->getLoginUrl(
     array('scope' => 'email,read_stream')
);

として、その$loginUrlにアクセスさせれば良い。
これを使って、WordPressのプラグインを作っていれたのがchoinomi.com.
よく聞かれる、ページへの投稿は、まずそのユーザーがpageのwallへの書き込み権限があるかを確認し、書き込めれば書き込めばいい。ざっくりこんな感じの流れで:

$page_id = 'ページのID';
try{
    $fbPageStatus = $facebook->api('/'.$page_id);
} catch (FacebookApiException $e) {
    echo $e->getMessage();
}
if($fbPageStatus == 1)
{
    try{
        $statusUpdate = $facebook->api('/'.$page_id.'/feed', 'post',
            array('message'=> 'test post to page',)
        );
    } catch (FacebookApiException $e) {
        echo $e->getMessage();
    }
}

ちなみに

ユーザーのアイコンを表示するだけなら、50×50 pxなら

<img src="https://graph.facebook.com/ykawato/picture">


大きい画像(幅200px)なら

<img src="https://graph.facebook.com/ykawato/picture?type=large">

とすれば表示できる。ykawato部にユーザーのidかusernameを入れる。

詳しくはこちら https://developers.facebook.com/docs/reference/api/using-pictures/

この記事を書いた人