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

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

PHP SDKを使ってFacebookのユーザー名を取得するFacebookアプリのサンプル

<スポンサーリンク>

Graph API Method

Graph APIは以下のように使う。

$ret = $facebook->api($path,$method,$params);

pathというのは、どの情報を取得したいかを設定する。
methodというのはオプション(入れてもいれなくてもいい)で、GETかPOSTかDELETEを指定する。
paramsもオプション(入れてもいれなくてもいい)で、呼び出したGraph APIによって特定のパラメーターを入れる

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

Facebook Graph APIを使ってユーザー名を取得するサンプル

まずはエラーが出たパターンから。
Facebookの公式サイト通りにやると、
https://developers.facebook.com/docs/php/howto/profilewithgraphapi/
以下のようなエラーが出る。

An active access token must be used to query information about the current user.

正直、原因はまだちゃんとはわかっていないが、解決はできた。
駄目なパターンは以下。

<?php
if($user_id) {
	try {
		$user_profile = $facebook->api('/me');
		echo "名前:" . $user_profile['name'];
	} 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());
	}
} else {
	//
	$login_url = $facebook->getLoginUrl();
	echo 'ログインしてください: <a href=' .$login_url . '">login.</a>';
}
?>

繰り返しになるが、$e->getMessage()のところで以下のようなエラーメッセージを捕捉する。

An active access token must be used to query information about the current user.

解決方法は以下のURLに書いてあるけれど、自分はこれじゃない方法で直った。
http://fb.dev-plus.jp/forum/topic.php?id=67https://www.facebook.com/trysquare/posts/133657820098734

何かというと

<?php
try {
	if($user_id) {
		$user_profile = $facebook->api('/me');
		echo "名前:" . $user_profile['name'];
	} 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());
}
?>

のように、try〜catchを1つ上に置いた。
user_idの取得部分からtryで囲むようにすると、Exceptionが発生しなくなった。

読んだ本

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

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


このサンプルはFacebookの公式サイトを中心にしたけれど、Facebook PHP SDKの情報はこの本を参考にした。

感謝のプログラミング

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