マメな人はバカであれ

バカなりに考えて、バカなりに行動します

技術的なことや、趣味的なことや、私生活的なことを書いてきます

FacebookページのFeedをPHPで取得して並べる

FacebookのFeedを取得してWordpressのような記事一覧にしたい。

そんな時は、FacebookのgraphAPIを使います!

前にも、無期限のアクセストークンの作成について記事を書きましたが、これはAPIを通わして作ったPageの無期限のトークンなのです。

sutobu000.hateblo.jp

今回は、企業や施設用のFacebookページのFeedを取得する方法を書いてきます。


必要なもの

Wordpressのような記事一覧を想定して作成していきます。

なので、必要になるのが
- 記事の本文 - サムネイルの画像 - 記事作成日時 - パーマリンク

これらを取得するためにDevelopersに登録しておきます。

https://developers.facebook.com/apps/

今回使うアクセストークンですが、App Access Tokenを使います。

これについては、このページにて説明があります。以下に抜粋しています。

Facebook API: 有効期限の長い Access Token を取得する · GitHub

Facebook アプリの App ID と App Secret を | でつないだものは App Access Token として使用できる。 App Secret は(意図的に変えない限り)変わらないのでもちろん無期限になる App Access Token ではユーザーの個人データにはアクセスできないが、server-to-server call で公開情報を取得するのであれば使用できる (たとえば Facebook Page の public feed を取得する など)

説明されていますが、App Access Tokenに|があるものは無期限でアクセストークンとして使用することが可能です。
取得できるものは限られますが、今回はFacebookページのfeedだけなので問題ありません。

そのApp Access TokenでFacebook PageのFeedを取得します。
以下のリンクで大まかなところは説明してくれています。

Feed - ドキュメンテーション - 開発者向けFacebook

$url="https://graph.facebook.com/[FacebookページのID]/feed?access_token=[Appアクセストークン]&limit=30&locale=ja&fields=created_time,message,full_picture,permalink_url";

https://developers.facebook.com/docs/graph-api/reference/v3.0/post


コード


<?php
$url="https://graph.facebook.com/[FacebookページのID]/feed?access_token=[Appアクセストークン]&limit=30&locale=ja&fields=created_time,message,full_picture,permalink_url";

$jsonData = file_get_contents($url, false, stream_context_create($options));

 $json = json_decode($jsonData, true); // jsonデータの整形・出力

 foreach ($json[data] as $data) :
  // var_dump($data);
  $f_contentStr = $data[message];
  $f_contentStr = strip_tags($f_contentStr); // テキスト取得
  $f_contentStr = preg_replace("/(\015\012)|(\015)|(\012)/", "", $f_contentStr); // 改行を削除
  $len_c = mb_strlen($f_contentStr); // コンテンツ文字数
  $len_c_max = 50; // 上限文字数
  $extention = '・・・'; // 末尾に付ける文字
  if($len_c>$len_c_max) {
    $f_contentStr = mb_substr($f_contentStr,0,$len_c_max); // 文字抜き出し
    $f_contentStr = $f_contentStr.$extention; // 末尾に付与
  };

  $f_permalink = $data[permalink_url];
  if (isset($data[full_picture])) {
    $f_pic = $data[full_picture];
  }else{
    $f_pic = "/img/dummy.jpg"; // 画像がなかったら代わりの画像を
  }
?>

な感じでデータを取得が可能になります。
どんなデータが取れるかはvar_dump()で確認しながら取得するといいですね。


終わり

最近はFacebookTwitterもプライバシーポリシーの変更に伴ってか、アカウントからFeedを取得するための手段が面倒になってきていますね。
皆さんも現在運営しているサイトやブログのSNS周りのウィジェットを確認しておくといいですね。

追記:
今回のFacebookのDeveloper登録ですが、作成したAppをレビュー申請を出して許可をもらえないとFeedが受け取れないかもしれません。
めんどくさいですが、レビューを申請して取得できるのように設定をしておきましょう。