UNIRRY

WEBデザインとホロスコープと宇宙のブログ

facebookのOAUTH認証で友達リストと誕生日を取得する

friends_birth

facebookのOAUTH認証ですが下記のmotooLogueさんの記事を参考にしました。
すごくわかりやすかったです。motooLogueさんの記事で十分だと思いますが、読みたい人は下のほうもどうぞ。
http://blog.motoo.net/2011/06/30/181051

私は企画上、友達の誕生日が必要だったので、若干パラメータをつけたして実装しました。
友達で取得する情報はパラメータに付与しないともってこれないみたいです。

phpサンプルソース

<?php
require_once '../facebook.php';
$facebook = new Facebook(array(
    'appId' => '__登録して取得したアプリID__',
    'secret' => '__登録して取得したアプリのシークレットキー__'
));
//アプリ側からログイン状態を取得
$fb_user = $facebook->getUser();

if ($fb_user) {
    //ログインしてたらユーザープロファイルを取得
    $fb_user_profile = $facebook->api('/me');
    //フレンドリストも取得
    $fb_user_friends = $facebook->api('/me/friends?fields=id,name,birthday');
} else {
    //ログインしてなかったら、STARTページに表示するログインURLの生成、パラメータで取得するものの許可をとる
    $par = array('scope' => 'user_birthday,friends_birthday');
    $fb_login_url = $facebook->getLoginUrl($par);
}
?>
<!DOCTYPE>
<html>
<head></head>
<body>
<?php  if ($fb_user): ?>
     ログインしてアプリを認証したあとの表示を記載
<?php  else: ?>
     ログインする前の表示を記載
<?php  endif ?>
</body>
</html>

Graph API Explorerで使えるパラメータを調べる

このbirthdayのパラメータですが、指定しないと取得できませんし、アプリ承認の時にもパラメータでわたしていないとダメみたいです。こういうデフォルトでは取れないようになっているものが他にもあるみたいで、Graph API Explorerで調べることができました。
https://developers.facebook.com/tools/explorer

emailなどもデフォルトでは取得できないようになっていますね。
さらにこの部分ですが、limitやlocale(言語)なども指定できました。

$fb_user_friends = $facebook->api('/me/friends?fields=id,name,birthday');

指定の仕方もパラメータで付与するやり方は同じです。
下は10件だけ取得する場合のコードです。

$fb_user_friends = $facebook->api('/me/friends?fields=id,name,birthday&limit=10');

oAuthを使ってサンプルアプリを作ってみたやつはこちら

facebookのOAUTH認証をつかったコンテンツ“ともだちエレメンツ”


horoscope

“sozatu” animation!! >>    animation1   |   animation2   |   animation3