Web システムのツボ

[Facebook API] FQLについて

201202032149.jpg


Facebook APIには、SQLに似たFQL(Facebook Query Language)という機能が備わっています。 SQLと似たインターフェースで、SQL感覚でデータを扱うことが出来ます。 自身の名前や友達リストなど基本的な情報を取得する場合、標準のGraph APIで事足りるのですが、より細かな情報を取得する場合にFQLはとても便利です。

FQLリファレンスはこちらを参考にしてください。
https://developers.facebook.com/docs/reference/fql/

また、FQLは公式のテストコンソールを使用して確認する事が出来ます。
https://developers.facebook.com/docs/reference/rest/fql.query/

試しに、いくつか検索してみた例を紹介します。

1.日本語表記の名前を取得

 Facebookで名前を取得しようとした時に、日本語表記と英語表記が混ざっていること無いですか?
 日本語表記の人は、出来れば日本語で表示したいですよね。
 Facebookには、名前の設定にその国の言語表記も設定することが出来ます。
 そこに母国語の名前を設定しているユーザは、このFQLで母国語の表記を取得することが出来ます。
 ※「user」テーブルではなく「profile」テーブルを指定します。
 SELECT name FROM profile WHERE id = me()

2.友人の中で、女性のみを抽出

 特に用途は不明ですが、何かの案件で調べたことがあったので紹介します。
 このように、サブクエリも使用することが出来ます。
 SELECT name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND sex IN ('female')

3.友達の中で、このアプリ(FQLを実行するアプリ)を使っていない人を取得

 例えば、友達の中でこのアプリを使っていない人に対して招待する場合などに、
 対象ユーザのリストが作成できますね。

 SELECT name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = [YOUR_APP_ID]) AND is_app_user IN ('1')

4.自分が「いいね!」を押したFacebookページのURLとファン数を取得

 過去に「いいね!」を押したページを取得することが出来ます。
 「いいね!」を取り消したい場合に一覧で取得できると便利ですね。

 SELECT page_id, name, fan_count, page_url FROM page WHERE page_id IN (SELECT uid, page_id FROM page_fan WHERE uid = me()) ORDER BY fan_count

5.Facebookにログイン中の友達リストを取得

   SELECT uid FROM user WHERE online_presence IN ('active', 'idle') AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

取得できる情報を知っておく事で、アプリ制作の幅も広がると思います。 Facebookを使っていて、まだまだ情報を整理できていない部分、不便に思うこともあると思います。 そういった機能を補助する形でアプリを作っていくと、面白いものが出来るかもしれませんね。


(tsubasa)

Webシステムのツボとは

オープンソースの紹介や、プログラミング講座、フリーソフトのレビューなど、Webエンジニアが送る、つれづれ日記。
【隔週金曜日更新】

運営会社:株式会社ジーピーオンライン

RSSを購読する

Monthly Archive