海の響きを懐かしむ

観たもの聴いたもの読んだものの記録と、日記など

Facebookを使った家族関係の調査[その1]

以前のエントリで書いたように、Facebook上のユーザの家族関係を調査するアプリを作る。Javascriptで、chromeJavascriptコンソールを用いてコーディングを行った。

基本的なアプリの作りかたは、郷田まり子さん(@maripogoda)さんの解説を参考にさせていただいた。FacebookのDevelopersページから新規アプリを登録し、IDを取得する。コードを書いたindex.htmlをサーバにアップロードして、そのURLをアプリのキャンバスページURLに指定する。すると、Facebookからアプリを叩くと以下のようにアプリのページにhtmlがそのまま埋め込まれる。
f:id:mitsuba3:20110518001001p:image

<reference>
ページが見つかりませんでした | コーヒーサーバは香炉である

<index.html>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
	<head> 
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
		<title>ししゃも</title> 
	</head> 
 
	<body> 
		<div id="fb-root"> 
		</div> 
		<h3>ぼんじゅーる</h3> 
		<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> // ライブラリの読み込み
		<script language = "Javascript"> 
			window.fbAsyncInit = function(){
				FB.init({
					appId: 'アプリのID',
					status: true,
					cookie: true,
					xfbml: true
				});
 
				FB.getLoginStatus(function(response){
					if(response.session){
						// ログイン後の処理
						showUserName();
					}else{
						login();
					}
				});
			}
 
			function login(){
				console.log("login");
          //  ログイン処理
				FB.login(function(response){
					if(response.session){
						if(response.perms){
							showUserName();
						}
					}else{
						console.log("login failed");
					}
				},
          // パーミッションを指定
				{perms:'user_relationships, user_relationship_details, user_status,friends_relationships, friends_relationship_details, friends_status'});
			}
 
			function showUserName(){
				FB.api(
					// FQLクエリを実行し、家族に関係する情報を取得
					{
						method: 'fql.query',
						query: 'SELECT name, profile_id, relationship FROM family WHERE profile_id = me()'
					},
 
					function(response){
						if (response.length > 0){
                    // コンソールに結果を出力
							console.log(response[0].name, response[0].profile_id, response[0].relationship);
						}
					}
				);
			}

			</script> 
	</body> 
</html> 


<実行結果>
実行すると、コンソールに以下のように表示される。
"家族の名前" "家族のID" "家族との関係"
私はFacebookに家族を友だちとして追加していないのでダミーユーザを作って姉妹に設定したところ、ちゃんと「sister」と表示された。


<ハマったところ>
以前のエントリで調べたように、FQLでデフォルトでアクセスできるのはそのユーザの名前やIDといった基本的な情報だけ。それ以上の個人情報にアクセスするには、ログイン時にパーミッションを指定する必要がある。以下のページに指定する項目が乗っていて、とても詳細に指定する仕組み。
Permissions Reference - Facebook ontwikkelaars


<やりたいこと>
まずは自分のIDで家族関係の表示をすることができたので、次は自分の友だちの関係も取得したい。クエリにIDをつっこめばいけるはず?