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(),
を追加して、認証セッションを保持