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

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

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

Facebook PHP SDKで誕生日、名前、プロフィール写真、友達一覧を取得して表示するサンプル

<スポンサーリンク>

まずGithubからFacebook PHP SDKをダウンロードしたり、サーバを借りたり、アプリ登録をしなければならないのだけれど、その辺はこのブログにも以前書いたので割愛します。
ぜひブログ内検索してください。

FacebookPHP SDKはけっこうシンプルで、

$facebook = new Facebook(array('appId' => 'アプリケーションID', 'secret' => 'アプリシークレット' ));

と、App IDとApp Secretを引数に渡すことで、Facebookオブジェクトをインスタンス化することができる。
で、このFacebookインスタンスを使って、様々なFacebook上の情報を扱う。

たとえば、こんな感じ。
FacebookAPIで、自分の情報を取得する

$me = $facebook->api('/me');

・友達一覧を取得する

$friends = $facebook->api('/me/friends');

とやるそうすると、アクセスを許可されたユーザの情報を扱うことができる。

さて、これらの使い方をちょっとだけ工夫して、以下のように誕生日、友達一覧、プロフィール写真などを取得してみたい。
名前とかは適当にぼかしてある。
f:id:sho322:20131105223759p:plain

<?php

require_once '../src/facebook.php';

//自分で設定した開発ページを指定する
$canvaspage = 'apps.facebook.com/fb-demo-hogehoge/';

$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'
			? 'https://'
			: 'http://';

$canvasUrl = $protocol.$canvaspage;

$facebook =
	new Facebook(
		array('appId' => 'XXXXX',
			  'secret'=> 'YYYY'));
$user = $facebook->getUser();

if ($user) {
	try {
		$me = $facebook->api('/me');
		$friends = $facebook->api('/me/friends');
	} catch (FacebookApiException $e) {
		echo '<pre>' .htmlspecialchars(print_r($e, true)).'</pre>';
		$user = null;
	}
} else {
	$url = $facebook->getLoginUrl(
		array('redirect_uri'=>$canvasUrl, 'scope'=> 'user_birthday'));
	echo "<script>top.location.href = '$url';</script>";
}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>プロフィールを取得する</title>
<?php if ($user): ?>
	<h3>プロフィール写真は以下です。</h3>
	<img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

	<h3>名前は以下です。</h3>
	<?php echo $me['name']; ?><br />

	<h3>誕生日は以下です。</h3>
	<?php echo '誕生日は:' .$me['birthday']; ?>

	<h3>友達一覧は以下です。</h3>
	<?php if ($friends):?>
	<ul>
	<?php
		foreach ($friends['data'] as $friend) {
			echo '<li>' .$friend['name'].'</li>';
		}
	endif
	?>
	</ul>

<?php else: ?>
	<a href="<?php echo $url; ?>" target="_top">Login</a>
<?php endif ?>
</head>
<body>
</body>

</html>

(余談)アプリを消す方法

アプリの開発で、ログイン済みのアプリのパーミッションを途中で変更した場合は、再認証を行ってパーミッションを再設定する必要があります。
これを行うことで、変更や追加したパーミッション情報にアクセスできるようになります。

で、消し方ですが、以下のとおりです。
右上のミニ四駆のギヤみたいなマークをクリック→一般アカウント設定→左側の「アプリ」をクリック→消したいアプリの横にある「×」を押す。

この記事を書くために勉強した本

基礎から学ぶ facebookアプリ開発

基礎から学ぶ facebookアプリ開発

Facebookアプリ開発系の本は「10日でわかる~」とこの本がありますが、こっちの方がサンプルが多くコードが読みやすいです。
その分、若干説明の丁寧さは劣るかもしれませんが、僕はこっちの方が使いやすい。
というのも、「10日で~」の方はコードの書き方が「ん?」となることも多く、jQueryも使っていないところが少しだけ不満でした。
こっちの本のコードはより実践で使いやすそうです。