2013年5月4日土曜日

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

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

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

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

使い方は、

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

これにより、フィードを配信している URL に移動する。記事のタイトルが文字化けして表示されるが、FeedlyGoogle 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 APIsGraph API を利用する。

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

  1. Facebook ページの idGraph 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 のようだ。

 

関連記事