Facebookアプリ開発に挑戦(その8・FQLの基本)

  • 投稿日:
  • by
  • カテゴリ:

Facebookから詳細な情報を得たいときには、「FQL」(Facebook Query Language)という記法で情報をリクエストすることができます。

1.FQLについて

FacebookのAPIを使うと、ユーザー等の各種のデータを読み込むことができます。
ただ、得られる項目が限定されていて、細かなデータを得ることができません。

たとえば、https://graph.facebook.com/me/friendlistsのAPIにアクセスすると、自分の友達の情報をまとめて得ることができます。
ただ、このAPIで得られるのは、個々の友達のIDと名前だけで、さらに細かい情報(アイコン等)を得ることはできません。

細かい情報も得たい場合、「FQL」(Facebook Query Language)を使います。
FQLでは、データベースのSQLと似た記法で、Facebookからデータを得る方法を記述することができます。

たとえば、自分の友達のID/名前/アイコンを読み込みたいとします。
この場合、以下のようなFQLを発行します。

SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

なお、FQLを発行するには、「fql.query」というAPIを実行します。
具体的には、以下のようなアドレスにアクセスします。

https://api.facebook.com/method/fql.query?access_token=アクセストークン&query=FQLの文

2.JavaScript SDKでFQLを発行する

JavaScript SDKでは、FB.api関数を使って、FQLを発行してデータを読み込むことができます。
その書き方は以下のようになります。

FB.api(
  {
    method: 'fql.query',
    query: FQLの文
  },
  function(response) {
    FQLの結果を加工する処理
  }
);

たとえば、先ほど例にあげたFQLを実行し、得られたデータをもとに、ユーザーの名前とアイコンを一覧表示したいとします。
この場合、以下のようにFB.api関数を実行します。

FB.api(
  {
    method: 'fql.query',
    query: 'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())'
  },
  function(response) {
    var html = '<ul>';
    for (var i = 0, j = response.length; i < j; i++) {
      html += '<li>';
      html += '<a href="http://www.facebook.com/profile.php?id=' + response[i].uid + '">';
      html += '<img src="' + response[i].pic_square + '" />';
      html += response[i].name + '</a></li>';
    }
    html += '</ul>';
    jQuery('#login')
      .html(html)
      .show();
  }
);