FacebookページをRSSで取得してPHPで表示する
FacebookのページをRSSで取得してPHPで表示したいと思います。最終的には取得したRSSを利用してWordPressを更新できないかな、と思っています。
ITかあさんのFacebookページ
このブログは今年の6月に入ってからようやくFacebookページを立ち上げました。
ITかあさんのFacebookページ
(よろしければ いいね とかお願いしますw)
(よろしければ いいね とかお願いしますw)
このページのRSSフィードのURLは以下になります。
FacebookページのウォールのフィードURLの取得
RSS2.0
https://www.facebook.com/feeds/page.php?format=rss20&id=[ページのID]
Atom1.0
https://www.facebook.com/feeds/page.php?format=atom10&id=[ページのID]
ページIDの取得の仕方
FacebookのウォールのURL 15桁の数字の部分がIDです
https://www.facebook.com/pages/Itかあさん/255192127915660
取得したRSSフィードをPHPで表示する
フィードURLが取得できれば後はfile_get_contentsしてXML表示するだけ(参考)
と、思ったのですが、すぐにはうまくいきません。
httpsをPHPで扱えるようにする php.ini変更
Open SSLをPHPで扱えるようにするにはphp.iniを変更しなくてはいけません。
以下の記述をコメントアウトを外すか、無ければ;extension=○○ の記述がたくさんあるところに追加し、Apacheを再起動すればOK。
extension=php_openssl.dll
FacebookのページをRSSをPHPで表示・・ところが
RSSフィードをPHPのfile_get_contentsで呼び出しします。
$contents = file_get_contents('https://www.facebook.com/feeds/page.php?format=rss20&id=255192127915660');
実行結果
使い勝手を確認するためには、次のいずれかのサイトからお好みのブラウザーの最新バージョンを入手してください
・・・はい??file_get_contentsでフィードのURLを取得するとこのような表示になります。
user_agentでブラウザを指定する
この問題は意外と簡単に解決できるようで、ini_setでuser_agentを指定してあげます。
ini_setなので、一番最初に以下コードを書いてあげます。
ini_set('user_agent', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
実行結果
全コード
ini_set('user_agent', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3'); //フィードを取得したいRSSのURLを記述 $contents = file_get_contents('https://www.facebook.com/feeds/page.php?format=rss20&id=255192127915660'); //XMLをオブジェクトに変換 //連想配列作成用に、新規で空の配列を用意する; $xml = simplexml_load_string($contents); for ($i = 0; $i <= 9; $i++) { echo (string)$xml->channel->item->$i->title; echo (string)$xml->channel->item->$i->description; echo (string)$xml->channel->item->$i->pubDate; echo (string)$xml->channel->item->$i->link; }
DEMO(ITかあさんのFacebookページをPHPで表示したもの)
ここまで出来るようになると、自分のデータベースに取得したRSSを登録するなんて簡単そうですね。
1点素晴らしいとおもったのはOGPもちゃんと取得しているという点。なかなか便利に使えそうです。