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

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

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

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

LINEで送る

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

トラックバック

トラックバックURL

トラックバック一覧

[...] < Facebookページのアルバムにある写真をPHPで取得する方法 | ブログトップ | API関連 | PHP関連 | [...]

コメント一覧

1. Posted by ume   2012年09月13日

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

質問です。

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

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

2. Posted by nandani   2012年09月13日

umeさん。

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

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

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

3. Posted by ume   2012年09月14日

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

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

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

4. Posted by tomo   2012年11月16日

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

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

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

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

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

コメントする

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

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