Google Feed APIとは
他のサイトが配信しているATOMやRSSフィードをJavaScriptを使って取得しようとした場合、同一生成元ポリシー(Same-Origin Policy)の制限によって直接他のサーバにあるデータへアクセスできずサーバ側でいったんフィードを受信するなどの処理が必要でした。
Google AJAX Feed APIを使用すると、Googleがフィードのキャッシュとしての役割を果たしてくれるため、サーバ側のプログラムを必要とせず、クライアント側のスクリプトだけで各種フィードを取得することが出来ます。
ようするに、クライアントサイドだけで外部サイトにあるRSSとかを取得できる代物。
Googleライブラリを読み込み
<!-- googleが提供するライブラリを読み込み -->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
単体での使い方
Google Feed APIを単体で使用しようとすると、下記の様になる。
// feed ライブラリを読み込み
google.load("feeds", "1");
google.setOnLoadCallback(function () {
var feed = new google.feeds.Feed(url);
feed.load(function(results) {
// feed読み込み後の処理
});
});
複数のfeedを読み込んで処理をしたい時
複数のRSSフィードを非同期的に読み込んで、処理をしたい時は上記のやり方ではできないので、jQueryのDefferdに頼る。
// jQueryのDefferdオブジェクトを返すメソッドの定義
function feed_load(url) {
var feed = new google.feeds.Feed(url),
dfd = $.Deferred();
feed.load(function(results) {
return results.error ? dfd.reject(results) : dfd.resolve(results);
});
return dfd.promise();
}
google.load("feeds", "1");
google.setOnLoadCallback(function () {
$.when(feed_load(url1), feed_load(url2), feed_load(url3)).done(function() {
// 複数のURLを読み込んだ後の処理
});
});