FacebookページのFeedをPHPで取得して並べる
FacebookのFeedを取得してWordpressのような記事一覧にしたい。
そんな時は、FacebookのgraphAPIを使います!
前にも、無期限のアクセストークンの作成について記事を書きましたが、これはAPIを通わして作ったPageの無期限のトークンなのです。
今回は、企業や施設用の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()
で確認しながら取得するといいですね。
終わり
最近はFacebookもTwitterもプライバシーポリシーの変更に伴ってか、アカウントからFeedを取得するための手段が面倒になってきていますね。
皆さんも現在運営しているサイトやブログのSNS周りのウィジェットを確認しておくといいですね。
追記:
今回のFacebookのDeveloper登録ですが、作成したAppをレビュー申請を出して許可をもらえないとFeedが受け取れないかもしれません。
めんどくさいですが、レビューを申請して取得できるのように設定をしておきましょう。