FQLについて
詳しいことは Facebook Query Language (FQL) に書いてますので時間のある時にじっくり読んでおきましょう(←自分に言っている:笑)
前回の以下の部分がFQLを使用している個所に当たるわけですが、SQLをご存知の方なら説明の必要は無いですね。
$profile = $facebook->api(array( 'method' => 'fql.query', 'query' => 'SELECT id, name, url, pic, pic_square, pic_small, pic_big, type, username FROM profile WHERE id=me()', ));
ざっと注意点だけ箇条書きにしておきますと
- profileテーブルからデータを取得します。profileテーブルの仕様はこちらに記述されています。
- 取得するデータはカラム名を記述する必要があります。*(アスタリスク)は使えない模様。
- me() はログインできている場合に使用できる関数で、ログインしているユーザのユーザIDとなります。
- 戻り値は行データの配列となります。つまり1行分のデータが連想配列で取得できるようになっていて、その連想配列が普通の配列になっています。
- 条件に合致するものが無ければ空配列 array() が返ってきます
- 何かエラーが発生した場合は例外がthrowされる。例外オブジェクトは $e->getResult() で例外の内容を取得できます。var_dump すると以下のようなエラーコードとエラーメッセージが含まれた配列データとなっています。ただし、使用するAPIによってgetResult()で取得できる例外情報は異なるようです。FQLの例外は以下のようになっています。
var_dump($e->getResult()); の結果
array { ["error_code"] => "601" ["error_msg"] => "Parser error: unexpected 'a' at position 101." ["request_args"]=> array { [0]=> array { ["key"] => "method" ["value"]=> "fql.query" } [1]=> array { ["key"] => "query" ["value"]=> "SELECT id FROM profile WHERE id=a" } [2]=> array { ["key"] => "api_key" ["value"]=> "XXX" } [3]=> array { ["key"] => "format" ["value"]=> "json-strings" } [4]=> array { ["key"] => "access_token" ["value"]=> "XXX" } } }