ちょっとトイレ掃除してたので投稿が遅れてしまった marionnettezero です。

今回はいよいよ Facebook の自分のプロフィールデータを取得しようと思います。
/me でのプロフィールデータの取得は多くの方がやっているかと思いますので、今回は、その他のものを取得していきたいと思います。
詳細は続きから!


1.好きな本 の取得

function getBooks ()
{
  // 戻り値の初期化
  $result = array();

  // 自分の情報を取得
  $contents = $this->_facebook->api('/me/books', 'GET', array('access_token' => $this->_access_token, 'locale' => 'ja_JP'));

  // データがある場合
  if (isset($contents['data']) && count($contents['data']) > 0) {
    // データ分ループする
    foreach ($contents['data'] as $value) {
      // 戻り値の配列に格納
      array_push($result, $value['name']);
    }
  }

  // 戻り値を返す
  return $result;
}

※ 前回のブログでも記載しましたが locale の指定で日本語データを取得しています


2.好きな音楽 の取得

function getMusic ()
{
  // 戻り値の初期化
  $result = array();

  // 自分の情報を取得
  $contents = $this->_facebook->api('/me/music', 'GET', array('access_token' => $this->_access_token, 'locale' => 'ja_JP'));

  // データがある場合
  if (isset($contents['data']) && count($contents['data']) > 0) {
    // データ分ループする
    foreach ($contents['data'] as $value) {
      // 戻り値の配列に格納
      array_push($result, $value['name']);
    }
  }

  // 戻り値を返す
  return $result;
}

3.好きな映画 の取得

function getMovies ()
{
  // 戻り値の初期化
  $result = array();

  // 自分の情報を取得
  $contents = $this->_facebook->api('/me/movies', 'GET', array('access_token' => $this->_access_token, 'locale' => 'ja_JP'));

  // データがある場合
  if (isset($contents['data']) && count($contents['data']) > 0) {
    // データ分ループする
    foreach ($contents['data'] as $value) {
      // 戻り値の配列に格納
      array_push($result, $value['name']);
    }
  }

  // 戻り値を返す
  return $result;
}

ここまで見て頂くと気づいているかと思いますが、/me/xxx の xxx 部分が変わっても戻りの xml の形は同一になっています。
つまり、xxx 部分のみを引数で指定可能な関数を作ってしまえば、様々なプロフィールデータの取得に使えてしまうのです。


さらにプロフィールデータの取得を行って行きますが、以下のものは、ちょっと取得の仕方が違っています。
わかるかな?

4.尊敬する人物 の取得

function getInspirationalPeople ()
{
  // 戻り値の初期化
  $result = array();

  // 自分の情報を取得
  $contents = $this->_facebook->api('/me', 'GET', array('access_token' => $this->_access_token, 'locale' => 'ja_JP'));

  // データがある場合
  if (isset($contents['inspirational_people']) && count($contents['inspirational_people']) > 0) {
    // データ分ループする
    foreach ($contents['inspirational_people'] as $value) {
      // 戻り値の配列に格納
      array_push($result, $value['name']);
    }
  }

  // 戻り値を返す
  return $result;
}

気づいたと思いますが、これは、/me の中の項目として存在しています。
まだ、Facebook 上のプロフィールデータは、仕様が適時変化している段階だったりしますので、/me/books のようにオブジェクトとして存在しているものや、/me の中の項目として存在しているもの等が入れ乱れていたりしますので、取得したい項目は、適時確認していった方がよいでしょう。



ここで紹介した以外にも 好きなスポーツ や 好きなチーム、好きなアスリート等プロフィールデータとして存在しているものは、ほぼ取得可能となっていますので、是非試してみてください。
API で取得方法が見つからなくても、FQL で取得できたりもしますので、あきらめない事が肝心です。
ちょっと長くなってしまったので、今回は、この辺で。

see you.