Blog article

フェイスブックページの投稿をphpでウェブサイトに表示

fb-json-php
デベロッパーツールから吐き出すjsonをphpで拾って表示
メモ書き程度に

仕様を変え続けるフェイスブック

昔はフィードをxmlで使えれるようになってたけど、
知らぬ間に勝手に仕様変更して、xmlが使えなった。
せっかくjsonで読み込んでも、また仕様変更したら面倒。
だったら、PagePluginを使った方がいい。と思う

json_decodeをしたら何もうつらなくなる

なんでだろう、なんでだろう。途方にくれる。
とりあえず、サーバ調べる。

<?php phpinfo(); ?>

と書いたファイルを、info.phpとしてアップ。

まさか、サーバのphpのバージョンが5.1.6とは。
json_decodeが使えれるのは、5.2以上。ここはお力を借ります。
http://pear.php.net/package/Services_JSON/
これ使います。

フェイスブックデベロッパーで情報を調べる

こんなことやろうとしてる人がいまさら、ここのリンクをクリックして…。
っていう、説明は無用だと思うから、割愛。

最終的にはこんな感じにしたよ

<?php
if (!function_exists('json_encode')) {
require_once 'JSON.php';
function json_encode($value) {
$s = new Services_JSON();
return $s->encodeUnsafe($value);
}
function json_decode($json, $assoc = false) {
$s = new Services_JSON($assoc ? SERVICES_JSON_LOOSE_TYPE : 0);
return $s->decode($json);
}
}
$accessToken = 'xxxxxxxxx|yyyyyyyyyy';
$pageId = 'zzzzzzzzzzzz';
$num = 8;
$jsonUrl = 'https://graph.facebook.com/v2.11/'. $pageId .'/feed?fields=created_time,message,picture,permalink_url&limit='. $num .'&access_token='. $accessToken;
$jsonData = file_get_contents($jsonUrl);
$json = json_decode($jsonData, true);
foreach ($json['data'] as $key => $val) :
$fb_time = date("Y年m月d日", strtotime($val['created_time']));
$fb_mes = mb_strimwidth($val['message'], 0, 128, ' ...', 'UTF-8');
$fb_pic = $val['picture'];
$fb_link = $val['permalink_url'];
?>
<li>
<div><img src="<?php echo $fb_pic; ?>" alt=""></div>
<p><?php echo $fb_time; ?></p>
<p><?php echo $fb_mes; ?></p>
</li>
<?php endforeach; ?>

まずphpのバージョンを調べる

phpinfoで見るまで、なんどもやってもできませんでした。
よく知らないサーバーを使う場合はphpのバージョンなど調べる事が大切。
そんな教訓でした。

あ、fb_link使ってませんが、aタグで使ってあげればフェイスブックのその投稿に飛びます。

参考:http://blog.livedoor.jp/shoooo1/archives/6064462.html

ありがとうございました。

【関連記事】

たかはし
この記事を書いた人:たかはし
おすすめの記事
タグ
SNSもよろしくね