Facebook Query LanguageもしくはFQLと呼ばれるもので、SQLと似たインターフェイスでGraph API上で提供されているデータを扱うことができます。Graph APIでは提供されていない機能もいくつか提供していて、複数のクエリを一度の問い合わせで処理することも可能です。
https://api.facebook.com
/method/fql.query?query=QUERYにアクセスすることで、FQLクエリを実行します。formatパラメータを指
定することで、レスポンスのフォーマットをXMLもしくはJSONから選択することができます。クエリはSELECT [fields] FROM
[table] WHERE
[conditions]という形式です。SQLとは違い、FQLのFROM句は一個のテーブルしか指定できません。SELECTもしくはWHERE句の
中でINを用いることでサブクエリを指定できますが、サブクエリは他クエリのスコープ内にある値を参照することはできません。また、クエリはインデックス
可能である必要があります。下記ドキュメント内で、インデックス可能と記されているプロパティを基にクエリを実行しなくてはなりません。
FQLは単純な計算やシンプルな真偽値を扱うことができ、AND,NOTなどの倫理演算子や、ODER BY句やLIMIT句を扱うこともできます。
uidを基にクエリを実行する場合は、me()を用いてログイン中のユーザを指定することができます。たとえば、下記のようにです。
SELECT name FROM user WHERE uid = me()
他に利用可能なのは、now(),strlen(),substr(),strpos()です。下記は、ログイン中のユーザとその友達全員の情報を取ってくるサブクエリのサンプルです。
SELECT uid, name, pic_square FROM user WHERE uid = me()
OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
より詳細な情報に関しては、下記の各テーブルをチェックしてください。ほとんどの場合は、サンプルとなるクエリが記されています。FQLの最適化については Performance Guide をご覧ください。
Tables
- album : 写真アルバムの情報を返すテーブルです。
- application : アプリケーションに関する読み取り専用のプロパティを返すテーブルです。
- checkin : checkinの情報を返すテーブルです。デフォルトでは、直近20個のレコードを返します。最大で500個です。
- comment : 一つもしくは複数のfb:comments/Feed storyコメントのXIDに紐づくコメントを返すテーブルです。
- comments_info : アプリケーションに紐づくfb:commentsオブジェクトのXIDを返すテーブルです
- connection : ユーザの友達と、ユーザが繋がっているFaceboook Pageを返すテーブルです。
- cookies : クッキー情報を返すテーブルです。
- developer : 任意のユーザがDeveloper applicationで開発者登録されているアプリケーションのIDを返すテーブルです。
- domain : ドメイン名とidのマッピング情報を返します。読み取り専用です。
- domain_admin :ドメインの管理者情報を返すテーブルです。
- event : エベント情報を返すテーブルです。
- event_member : ユーザのイベントでのステータス情報を返すテーブルです。
- family : ユーザの家族に関して詳細情報を返すテーブルです。
- friend : 二人のユーザが互いに友達関係にあるかを返すテーブルです。
- friend_request : ログイン中のユーザに対して誰が友達リクエストを送信したかを取得したり、特定のユーザに対してログイン中のユーザが友達リクエストを送信したかを取得するテーブルです。
- friendlist : 指定したユーザの所有する友達リストの情報を返します。
- friendlist_member : 友達リストに属するユーザを返します。
- group : グループに関する情報を返すテーブルです。
- group_member : グループに属するメンバー情報を返すテーブルです。
- insights : アプリケーション、ドメイン、ページに関する統計情報を返します。
- like: 任意のFacebookオブジェクト(動画、ノート、リンク、写真、写真アルバム)をlikeしたユーザのIDを返します。
- link : ログイン中のユーザが投稿したlinkを返します。
- link_stat : あなたのFacebook Shareボタンに関する詳細情報を返します。
- mailbox_folder : ユーザの受信箱の情報を返します。
- message : スレッド中のメッセージの情報を返します。
- note : ログイン中のユーザが書いたノート情報を返したり、特定のノートの詳細情報を返します。
- notification : ログイン中のユーザの通知情報を取得します。つまり、 http://www.facebook.com/notifications.phpに表示される通知全般です。
- object_url : Open Graph上のURLに関する情報を返します。
- page : Facebook Pageに関する情報を返します。
- page_admin : Facebook Pageの管理者情報を返します。
- page_fan : Facebook Pageのファン情報を返します。
- permissions : アプリケーションに対して、ログインユーザが許可した追加パーミッションの情報を返します。
- permissions_info : 追加パーミッションに関する、より詳細な情報を返します。
- photo : 写真情報を返します。
- photo_tag : 写真タグに関する情報を返します。
- place : 場所に関する情報を返します。
- privacy : 任意のobject_idに関するユーザのプライバシ設定を返します。
- profile : story上に表示されたFacebook Pageやユーザプロフィールで閲覧可能な情報を返します。
- review : アプリケーション、ユーザ、もしくは両方と紐づくレビュー情報を返します。
- standard_friend_info : 二人のユーザが友達としてつながっているかを返します。
- standard_user_info : ユーザの基本情報を返します。解析用の情報が欲しいとき専用です。
- status : ユーザのステータスを1つもしくは複数返します。
- stream : ユーザのストリームもしくはプロフィールからの投稿を返します。
- stream_filter : stream FQL tableを利用するときに使うfilter_keyを取得するときに使います。ユーザがFacebook上で使用できるフィルタです。
- stream_tag : ユーザもしくはFacebook Pageと、それらがステータス投稿に紐づけたアイテムの繋がりを返します。
- thread : ユーザの受信箱内のスレッド情報を返します。
- translation : オリジナルの状態の文字列情報と、アプリケーション用に翻訳された文字列を返します。
- unified_message : 新しいFacebookメッセージシステムのメッセージ情報にアクセスする際に使います。
- unified_thread : 新しいFacebookメッセージシステムのスレッド情報にアクセスする際に使います。
- unified_thread_action : 新しいFacebookメッセージシステムのスレッドでの、購読/非購読アクション情報を取得するのに使います。
- unified_thread_count : 新しいFacebookメッセージシステム上のスレッド数を取得するのに使います。
- user : ユーザプロフィールの詳細情報を返します。
- video : 動画の情報を返します。
- video_tag : 動画タグ情報を返します。