| ブログトップ | API関連 | PHP関連 |

Facebookページにある"すべての"アルバムの写真をPHPで取得する方法

前回は特定のアルバムのみの写真を取得する方法を記述しました。

今度はFacebookページにあるすべてのアルバムの写真を取得する方法です。

必要なのはPHP5.2以上が動作するサーバ環境(json_decodeがいるので)と、そのFacebookページのID情報です。

ためしにFacebook Japanの公式Facebookページにあるすべてのアルバムの写真情報を取得し、写真を一覧表示します。

まずFacebookページIDですが、前回同様「Facebookスポット」アルバムページのURLをご覧ください。

http://www.facebook.com/media/set/?set=a.428510844023.214836.365989369023&type=3

今度は最後の「.」から「&type=3」までにある数字を取得してください。

つまり「365989369023」です。

これがFacebookIDです。

これを以下のサンプルプログラムの中にある「$fbpage_id」変数に代入します。


$fbpage_id = '365989369023';	//FacebookページID
$thumb_size_set = 3;    //サムネイルのサイズ

//アルバム情報を取得する
$albums_url = "http://graph.facebook.com/".$fbpage_id."/albums/";
$albums_res = file_get_contents($albums_url);
$albums_array = json_decode($albums_res, TRUE);

if(!empty($albums_array["data"])){
	foreach($albums_array["data"] as $albums_values){
		
		//アルバム内の写真情報を取得する
		$album_id = $albums_values["id"];
		$photos_url = "http://graph.facebook.com/".$album_id."/photos/";
		$photos_res = file_get_contents($photos_url);
		$photos_array = json_decode($photos_res, TRUE);
		
		if(!empty($photos_array["data"])){
			
			$albums_link = $albums_values["link"];
			$albums_name = $albums_values["name"];
			echo '<h2><a href="'.$albums_link.'" target="_blank">'.$albums_name.'</a></h2>'."\r\n";
			
			foreach($photos_array["data"] as $photos_values){
				
				$thumb_size_count = count($photos_values["images"]);
				for($i=$thumb_size_set; $i > 0; $i--){
					if($thumb_size_count > $i){
						$thumb_size = $thumb_size_count - $i;
						break;
					}
				}
				
				$photo_name = $photos_values["name"];
				$photo_path = $photos_values["link"];
				$photo_thumb_path = $photos_values["images"][$thumb_size]["source"];
				$photo_thumb_width = $photos_values["images"][$thumb_size]["width"];
				$photo_thumb_height = $photos_values["images"][$thumb_size]["height"];
				
				echo '<p><a href="'.$photo_path.'" target="_blank"><img src="'.$photo_thumb_path.'" width="'.$photo_thumb_width.'" height="'.$photo_thumb_height.'" alt="'.$photo_name.'" /></a></p>'."\r\n";
			}
		}
	}
}

サンプルを実行する

なお、結構表示まで時間がかかります。

日々の生活にhappyをプラスする|ハピタス

このエントリーをはてなブックマークに追加

LINEで送る

nandani | 2011年12月14日 | コメント(5) | トラックバック(1) | API関連 | PHP関連

トラックバック

トラックバックURL

トラックバック一覧

[...] タイムラインは以前紹介したアルバムや写真を取得する方法よりも、ひと手間かかります。(アクセストークンを取得する必要があるため) [...]

コメント一覧

1. Posted by ゼルエル   2012年10月03日

こんにちは。
いつも楽しく読ませていただいてます。

このプログラムですが、うまく実行できませんでした。
もしよかったら、.php形式のファイルを送っていただきたいです。
よろしくお願いします。

2. Posted by nandani   2012年10月03日

ゼルエルさん。

コメントありがとうございます。
とりあえず、zip圧縮したファイルをアップロードしましたのでこちらよりダウンロードしてください。
http://www.nandani.sakura.ne.jp/download/php/albums_photos.zip

うまくいかない可能性として、
1.PHPのバージョンがPHP5.2以上じゃない。
2.PHPの設定で「allow_url_fopen」がOffになっている(file_get_contents関数を使うには、これがOnになっている必要がある)
が考えられます。
こちらを一度ご確認ください。

それでは。

3. Posted by ゼルエル   2012年10月03日

早速のご返事、ありがとうございます。
ダウンロードさせていただいたファイルで、サンプルのページの画像一覧は取得できました。

ただ、FacebookIDを変更して使用しようとすると、「failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request」というエラーで実行できません。

原因を調べてみたのですが、わかりませんでした。
何か考えられる原因と対策はありますでしょうか?

4. Posted by nandani   2012年10月04日

ゼルエルさん。

原因多分わかりました。
$fbpage_idに個人ページのIDを入れていませんか?
これで取得できるのは「Facebookページ」(Facebookでログインしなくても見れるページありますよね。企業がやってるページとか。そういうのです。)のアルバムだけです。
どうしてもという場合は、個人でもFacebookページを作ることは可能ですので試してみてはいかがでしょうか。
作り方は、こちらのサイトなど参考になるかと思います(ここもFacebookページです)。
http://www.facebook.com/note.php?note_id=153013314750115

5. Posted by ゼルエル   2012年10月04日

ありがとうございます。
なるほど、個人ページはできないんですね!
わかりました!友人の写真を一覧からピックアップしてアルバムを作ろうと思っていたんですが、それはできなさそうですね。
地道に一人ずつアルバムを見て選んで作ります!

丁寧な対応、ありがとうございました。

コメントする

※メールアドレスが公開されることはありません。

名前 *
メール*
URL
Copyright(c) 2010 - 2017 ダリの雑記