facebook:fan pageのウォールに投稿された画像を一覧表示する
2012年04月16日 11時07分
ファンページのウォールに投稿した画像を自分のサイトに表示したいという要望があった。
上記ぐらいだったらSDK使わずに直にGraph APIのURL叩く方式で問題なく実装できたのでそのメモ。
アルバム一覧取得のAPI URL
http://graph.facebook.com/[ファンページID]/albums/
上記のURLを叩くとアルバム一覧がJSON形式で帰ってくるのでその一覧の中でtype属性がwallのデータのアルバムIDを取得する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$album_list_cont = file_get_contents("http://graph.facebook.com/[ファンページID]/albums/"); $js = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); $albums_arr = $js->decode($album_list_cont); if (!empty($albums_arr["data"])) { foreach($albums_arr["data"] as $crt_album) { if ($crt_album["type"] == "wall") { // ウォールに投稿されたデータ // $crt_album["id"]にアルバムIDが入っているので保持しておく } } } |
※PHPのバージョンが古いためjson_decodeが使えないのでPearのライブラリを使用している
次はalbumから画像を取得する手順。
アルバム一覧取得のAPI URL
http://graph.facebook.com/[アルバムID]/photos?limit=25&offset=0&fields=images
上のURLを叩くと画像一覧が取得できる。
offsetやfieldsパラメータは適せん変更するべし。
一回で取得できなかった場合は[paging][next]というパラメータに続きを取得するパラメータが入ってくるので拾うこと。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
$photos_cont = file_get_contents("http://graph.facebook.com/[アルバムID]/photos?limit=25&offset=0&fields=images"); $photos_arr = $js->decode($photos_res); $next_page_url = "first url"; while ($next_page_url != "") { $next_page_url = ""; foreach($photos_arr as $crt_photo_key => $crt_photo_val) { switch ($crt_photo_key) { case "paging": $next_page_url = isset($crt_photo_val["next"]) ? $crt_photo_val["next"] : ""; break; case "data": $crt_image_arr = get_image_infos($crt_photo_val, $thumb_size_set); $image_arr = array_merge($image_arr, $crt_image_arr); break; default: break; } } if ($next_page_url != "") { $photos_res = file_get_contents($next_page_url); $photos_arr = $js->decode($photos_res); } } // とりあえずブラウザ表示 for ($img_idx = 0 ; $img_idx < count($image_arr) ; $img_idx ++) { echo "<img src='{$image_arr[$img_idx]['source']}' />\n"; } |
サンプルURL
http://www.crossl.net/blog/pg_sample/fb_album_image/wall_images.php
※うちの会社のブランドです。
別にアルバムを作ってしまうとtypeがwallではなくnormalになるのでこの方法では取得できない。
あくまでアルバムwallの画像一覧になる。
Webの資料を調べるけど結局は本家が一番わかりやすいという罠。(英語ですが…)
Graph API参考
http://developers.facebook.com/docs/reference/api/album/