2013年5月4日土曜日

「Facebook ページ」のフィードを取得するブックマークレット

1. Facebook ページが配信するフィード

a. フィードを表示するブックマークレット

「Facebook ページ」のフィードを取得したい。そのためのブックマークレット。

使い方は、

  1. 予め上記リンクをブックマークに登録する。
  2. 登録したい Facebook ページで登録したブックマークをクリック。

これにより、フィードを配信している URL に移動する。記事のタイトルが文字化けして表示されるが、Feedly や Google Reader に登録すると、文字化けは解消される。

ただし、記事の中にある写真は、Facebook のサイトで見るよりも小さい。これに対して、サムネイルをマウスオーバーで拡大するアドオン Thumbnail Zoom Plusを併用すると良い。

 

b. フィードを検出できないのでブックマークレットが必要

Facebook ページは、その場でフィードを配信している URL が指定されていない。そのため、ブラウザがフィードを検出できない。一般的なブログのようにフィードを簡単に取得できないから不便。これは Facebook 内で「ページフィード」を利用させたいからだろう。

Firefox では、標準でフィードを検出する仕組みが備わっている。ツールバーをカスタマイズすることにより、「購読」ボタンを好きな場所へと配置できる。 Google Chrome では、拡張機能 RSS Subscriptions with FEED で同じ機能を使える。

最近、企業サイトの中に、ホームページをパンフレットの代わりとし、「更新情報」を Facebook ページで提供する形を見かける。フィードリーダーに情報を集約している自分としては、この仕様では困る。なぜなら、わざわざ Facebook を開くのは面倒だから。そのようなサイトを見る度に、自前でフィードを出力するか、フィードを出力するブログで更新情報を通知してほしいと思う。

 

c. 「お知らせ」のフィード

ところで、Facebook の「お知らせ」通知には、フィードが用意されている。

Facebookのお知らせのRSSフィードを作成するにはどうすればよいですか。 | Facebookヘルプセンター

お知らせページでFacebookのお知らせのRSSフィードを作成することができます。ページ上部のRSSリンクをコピーして、RSSリーダーに貼り付けます。

フィードを登録するには、「お知らせ」より、RSS のリンクをクリックし、フィードリーダーに登録する。

 

2. Facebook ページのフィードを得る方法

Facebook ページの フィードを得るには、Facebook APIs の Graph API を利用する。

フィードを取得する流れは、

  1. Facebook ページの id を Graph API を利用して取得する。
  2. id と「フォーマット」を指定して、フィードを得る。

例えば、フェイスブック ジャパン ( https://www.facebook.com/FacebookJapan )のフィードを手動で取得するには、

  1. Graph API Explorer を用いて、Graph API で GET を選択し、フィールドに FacebookJapan と入力し、送信ボタンを押す。
  2. FacebookJapan の id を含んだ情報が表示される。

この id を下記の URL に当てはめる。

  • http://www.facebook.com/feeds/page.php?&format=rss20&id=[ここにidを指定する]

これにより、以下の URL がフィードだと分かる。

修正(2013/09/24): Firefox において、安全でないコンテンツをブロックする動作に対する対策をした。

 

フォーマットが RSS2.0 だと文字化けしない

フィードの「フォーマット」として、ATOM と RSS2.0 を指定できる。

両方とも、フィードのプレビューをブラウザで確認するとタイトル部分が文字化けする。しかし、RSS2.0 の方は、Feedly へ登録すると文字化けが直る。

 

3. ソースコード

ブックマークレットのソースコードは、以下の通り。

利用したメソッド。

全体の構成。

利用したサイト。

 

対象ページによる場合分け

Facebook ページには、独自のユーザーネームが付けられているページと、そうでないページがある。

例えば、フェイスブック ジャパン にはユーザーネームが設定されている。

これに対して、NICI JAPAN は、Facebook ページの URL が異なる。

この場合、末尾の数次が id のようだ。

 

関連記事