PHP5.2未満のバージョンでfacebookSDKを使った時のメモ

まずは、ここからアプリを登録。
登録後、SDKをダウンロード
https://github.com/facebook/php-sdk
使い方と説明
http://developers.facebook.com/docs/reference/php/
http://developers.facebook.com/docs/reference/api/permissions/

早速、ファイルを設置。

/document_root
    fb_sample.php
    /sdk
        base_facebook.php
        facebook.php
        fb_ca_chain_bundle.crt

fb_sample.php

<?php
require_once("sdk/facebook.php");
$facebook = new Facebook(
    array(
        'appId'  => 'id',
	'secret' => 'key',
    )
);
$user_id = $facebook->getUser();
if($user_id){
    //ウォールへ書き込み
    try{
        $facebook->api('/me/feed', 'POST',
            array(
                'message' => '僕のアプリからウォールへ書き込んだよ',
                'link'    => 'http://d.hatena.ne.jp/letitride/',
                'name'    => 'LET__IT__RIDE',
	    )
        );
    }catch(FacebookApiException $e){
    }
    exit;
}
$par = array(
	'scope' => 'publish_stream',
        //認証後の出力URL
	'redirect_uri' => 'http://mydomain/fb_sample.php',
	'display' => 'popup',
);
$fb_login_url = $facebook->getLoginUrl($par);
echo "<a href=\"$fb_login_url\">auth facebook </a>"; 
?>

ブラウザから実行してみると

http://mydomain/fb_sample.php

早速エラー

'Exception' with message 'Facebook needs the JSON PHP extension.'

どうやら、JSONがないと例外を吐くらしい。
base_facebook.php

if (!function_exists('json_decode')) {
  throw new Exception('Facebook needs the JSON PHP extension.');
}

http://php.net/manual/ja/function.json-decode.php
はい。PHP5.2以上かららしいです。

PECLがあるようなので、インストール。

# pecl install json
# echo extension=json.so > /etc/php.d/json.ini
# /etc/init.d/httpd reload

で、無事に動作を確認。

その他ハマッたこと

認証 → リダイレクトしてもuser_idが引き継がれない。どうやらcookieにセッションIDを食わしている模様。
サーバの設定が

php_flag        session.use_cookies             0

なので、

'redirect_uri' => 'http://mydomain/fb_sample.php'.session_name()."=".session_id(),

を追加して、認証セッションを保持