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"
}
}
}