この記事は公開から1年以上経過しており、内容が古くなっている可能性があります。
前回は特定のアルバムのみの写真を取得する方法を記述しました。
今度はFacebookページにあるすべてのアルバムの写真を取得する方法です。
必要なのはPHP5.2以上が動作するサーバ環境(json_decodeがいるので)と、そのFacebookページのID情報です。
ためしにFacebook Japanの公式Facebookページにあるすべてのアルバムの写真情報を取得し、写真を一覧表示します。
まずFacebookページIDですが、前回同様「Facebookスポット」アルバムページのURLをご覧ください。
365989369023&type=3 このページを見るには、ログインまたは登録してくださいFacebookで投稿や写真などをチェックできます。
今度は最後の「.」から「&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";
}
}
}
}
なお、結構表示まで時間がかかります。

コメント
こんにちは。
いつも楽しく読ませていただいてます。
このプログラムですが、うまく実行できませんでした。
もしよかったら、.php形式のファイルを送っていただきたいです。
よろしくお願いします。
ゼルエルさん。
コメントありがとうございます。
とりあえず、zip圧縮したファイルをアップロードしましたのでこちらよりダウンロードしてください。
https://nandani.sakura.ne.jp/download/php/albums_photos.zip
うまくいかない可能性として、
1.PHPのバージョンがPHP5.2以上じゃない。
2.PHPの設定で「allow_url_fopen」がOffになっている(file_get_contents関数を使うには、これがOnになっている必要がある)
が考えられます。
こちらを一度ご確認ください。
それでは。
早速のご返事、ありがとうございます。
ダウンロードさせていただいたファイルで、サンプルのページの画像一覧は取得できました。
ただ、FacebookIDを変更して使用しようとすると、「failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request」というエラーで実行できません。
原因を調べてみたのですが、わかりませんでした。
何か考えられる原因と対策はありますでしょうか?
ゼルエルさん。
原因多分わかりました。
$fbpage_idに個人ページのIDを入れていませんか?
これで取得できるのは「Facebookページ」(Facebookでログインしなくても見れるページありますよね。企業がやってるページとか。そういうのです。)のアルバムだけです。
どうしてもという場合は、個人でもFacebookページを作ることは可能ですので試してみてはいかがでしょうか。
作り方は、こちらのサイトなど参考になるかと思います(ここもFacebookページです)。
http://www.facebook.com/note.php?note_id=153013314750115
ありがとうございます。
なるほど、個人ページはできないんですね!
わかりました!友人の写真を一覧からピックアップしてアルバムを作ろうと思っていたんですが、それはできなさそうですね。
地道に一人ずつアルバムを見て選んで作ります!
丁寧な対応、ありがとうございました。