読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Facebookアプリでユーザーのタイムラインの投稿を取得するサンプル

<スポンサーリンク>

以前までの段階で、Facebookアプリの新規登録や、PHP SDKのダウンロードなどを行った。
このブログの日記検索で「Facebook」や、「Facebookアプリ」のタグを見てほしい。

今回は、ユーザーのタイムラインを取得するサンプルを作る。
ブラウザ上には以下のように、ログインユーザ名とタイムラインのメッセージを表示する。
メッセージが取得できなかった場合は「メッセージはありません」と表示する。

ログインユーザーの名前:Hoge Test
投稿者の名前:Chan Hee Lee
メッセージはありません
投稿者の名前:Tatsuki Fujii
一目で恋をした。それは幻だったかもしれないけれど。 まるで夢の中にいるみたいだ。 本当に、こんな気持ちになることってあるんだ、って初めて知った。
投稿者の名前:Erica Yamamoto
メッセージはありません
投稿者の名前:Satsuki Narita
疲れた疲れた(T_T) 休みほしい飲みに行きたい買い物したい韓国料理食べたい(T_T) なんかどっか行きたい←
(略)

で、このようにユーザーのタイムラインを取得するサンプルがこちら。

<?php

// PHP SDKのインクルード
include_once './fb-sdk/facebook.php';

// Facebookオブジェクトを初期化する
$facebook = new Facebook(array(
  'appId' => 'XXXXX',
  'secret' => 'YYYYYYY'
));


//ユーザーIDを取得する
$user_id = $facebook->getUser();
try {
	if($user_id) {
		$user_profile = $facebook->api('/me');
		echo "ログインユーザーの名前:" . $user_profile['name'];
		$posts = $facebook->api('/me/home', Array('limit' => 50));
	} else {
		$login_url = $facebook->getLoginUrl();
		echo 'ログインしてください: <a href=' .$login_url . '">login.</a>';
	}
} catch (FacebookApiException $e) {
	$login_url = $facebook->getLoginUrl();
	echo 'ログインしてください:<a href=' .$login_url . '">login.</a><br />';
	echo $e->getMessage();
	error_log($e->getType());
	error_log($e->getMessage());
}

?>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<title>タイムラインの取得</title>
<style type="text/css">
html, body {
  padding: 0;
  margin: 0;
}
</style>
</head>
<body>
<div id="fb-root"></div>
<?php
foreach($posts['data'] as $post) {
	echo '投稿者の名前:';
	echo $post['from']['name'] . '</br>';
	echo @$post['message'];
	if (!isset($post['message'])) {
		echo 'メッセージはありません';
	}
	echo '</br>';
}
?>
<script>
FB.init({
	appId: 'XXXXXX', cookie:true,
	status:true,xfbml:true,oauth:true
});

FB.getLoginStatus(function(response1) {
	login = function() {
		FB.login(function (response2) {
			window.location.reload();
		}, { scope : 'read_stream'})
	};
	if (response1.status != 'connected') {
		login();
	} else {
		FB.api('/me/permissions', function(response) {
			if(!(response.data && response.data[0].read_stream)) {
				login();
			}
		})
	}
});
</script>
</body>
</html>

下の方にあるJavaScriptが無いと、ちゃんとログインできないから注意が必要。
PHP SDKを使ってユーザーのタイムラインを取得しているのは以下の部分。

<?php
foreach($posts['data'] as $post) {
	echo '投稿者の名前:';
	echo $post['from']['name'] . '</br>';
	echo @$post['message'];
	if (!isset($post['message'])) {
		echo 'メッセージはありません';
	}
	echo '</br>';
}
?>

ここは$postsからメッセージなんかを取り出す部分。
ここよりさらに上の、上部の

$posts = $facebook->api('/me/home', Array('limit' => 50));

で、$postsの値を取得している。
この'/me/home'の指定を色々変えることで、Facebookのデータを活用できる。

詳しくは、以下の書籍を参照してほしい。

読んだ本

10日でおぼえるFacebookアプリ開発入門教室 (10日でおぼえるシリーズ)

10日でおぼえるFacebookアプリ開発入門教室 (10日でおぼえるシリーズ)

感謝のプログラミング

今回で感謝のプログラミングは【666時間目】
10000時間まで、あと【9334時間】