FacebookページをRSSで取得してPHPで表示する ITかあさん

ITかあさん

FacebookページをRSSで取得してPHPで表示する

FacebookのページをRSSで取得してPHPで表示

FacebookのページをRSSで取得してPHPで表示したいと思います。最終的には取得したRSSを利用してWordPressを更新できないかな、と思っています。

ITかあさんのFacebookページ

このブログは今年の6月に入ってからようやくFacebookページを立ち上げました。

ITかあさんのFacebookページ
(よろしければ いいね とかお願いします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もちゃんと取得しているという点。なかなか便利に使えそうです。

初夏のJavaScript祭 in サーキュレーションビル ForPro