Facebookページにある”特定の”アルバムの写真をPHPで取得する方法

この記事は公開から1年以上経過しており、内容が古くなっている可能性があります。

Facebookページを見ると、左のメニューに「写真」という項目があるページをよく見かけます。

その名の通り、アルバムごとに写真をアップし、公開することができるわけですが、このアルバムの写真情報をPHPで取得することができます。

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

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

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

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

というURLになっています。

いくつか数字の羅列が並んでいますが、必要なのは「a.」から次の「.」までの数字。

つまり「428510844023」です。

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


$album_id = '428510844023';	//アルバムID
$thumb_size_set = 3;	//サムネイルのサイズ
$limit=0;	//取得したい最大枚数(0とするとデフォルト設定の25枚)

$url = "http://graph.facebook.com/".$album_id."/photos/?limit=".$limit;
$res = file_get_contents($url);
$data_array = json_decode($res, TRUE);

if(!empty($data_array["data"])){
	foreach($data_array["data"] as $values){

		$thumb_size_count = count($values["images"]);
		for($i=$thumb_size_set; $i > 0; $i--){
			if($thumb_size_count > $i){
				$thumb_size = $thumb_size_count - $i;
				break;
			}
		}

		$photo_name = $values["name"];
		$photo_link = $values["link"];
		$photo_thumb_path = $values["images"][$thumb_size]["source"];
		$photo_thumb_width = $values["images"][$thumb_size]["width"];
		$photo_thumb_height = $values["images"][$thumb_size]["height"];

		echo '<p><a href="'.$photo_link.'"><img src="'.$photo_thumb_path.'" width="'.$photo_thumb_width.'" height="'.$photo_thumb_height.'" alt="'.$photo_name.'" /></a></p>';
	}
}

サンプルを実行する

もちろん閲覧者がFacebookにログインする必要はありません。

非常に簡単ですね。

※枚数が多くなると重くなるので、キャッシュを取るなどの対策をすることをお勧めします。

 

参考にさせていただいたサイト

facebookのアルバム写真をJSONで取得して表示する with jQuery | Benjamin

コメント

  1. ume より:

    ステキなプログラムをありがとうございます。

    質問です。

    特定のアルバムはきちんと表示されましたが、26以上は表示されません。特定のアルバムの中にあるすべての写真を表示することは出来ないんですか?

    お答えいただけるようでしたら、よろしくお願いします。

  2. nandani より:

    umeさん。

    コメントありがとうございます。
    本当ですね!
    デフォルトでは25枚で止まってしまうようです。
    少ないアルバムでしかテストしなかったので気づきませんでいた^^;

    というわけで書き換えました。
    3行目の「$limit」に取得したい最大枚数を入力してください(0だとデフォルトの25枚となります。)

    あまり大量に取得しようとすると制限をかけられてしまう可能性があるので注意してください(調べたわけではないですが)。

  3. ume より:

    さっそくお返事をありがとうございます。

    このブログでは、いつも色々と勉強させていただいております。
    (RSSで読んでいます。)

    毎回記事を楽しみにしておりますので、末永くよろしくお願いします。

  4. tomo より:

    お世話になります。お尋ねします。

    fbのアルバムって、古いのが上に来て、新しいのが下に来るようになっています。

    このプログラムでは、上の写真を呼び出しているようで、新しい写真を表示させようとすると、fbのアルバムで下から上へわざわざ移動させないといけません。

    枚数が増えると、結構面倒な作業となります。そこで、fbの設定のままで、新しい写真順に呼び出すことって出来るんでしょうか?

    自分の幼いプログラム力ではとうていわかりません。
    もしよろしければ、教えて下さい。

タイトルとURLをコピーしました