instagramで写真を削除した場合のAPIの挙動

現在、このサイトのトップにinstagramに投稿した写真のサムネイルを表示するようにしています。直近の6件を表示するようにしているんですが、さっきみたら、1件しか表示されてませんでした。。。なんで?

ちなみに、instagram APIを利用したときに残したメモはこちらです。
instagramのAPIを使って写真を取得する方法(2013.07.14)

んで、javascriptコンソールみたらエラーが発生してました。

Uncaught TypeError: Cannot read property 'created_time' of null 

ソースはこんな感じにしています。

success: function(data, textStatus, jqXHR) {
$("#instagram").text("");
for (var i = 0, length = 6; i < length; i++) {
	var d = data.data[i];

	var ts = d.caption.created_time;

           :

	$("#instagram").append(
	$("<div>").addClass("instagram_photo").append($("<a>").attr("href", d.link).attr("target", "_blank").append($("<img>").attr("src", d.images.thumbnail.url).attr("alt", d.caption.text))));}

}

実は今日、instagramからtwitterへ連携するPOSTがうまく行かなくて、何度かUPと削除を繰り返したんだけど、それが原因じゃないかと思います。
つまり、削除した写真についてもdataには入ってきてて、でも削除されてるから「caption.created_time」はない、って言われてるんだと思われます。

ってことで、以下のように修正しました。

success: function(data, textStatus, jqXHR) {
$("#instagram").text("");
var j=0;
for (var i = 0, length = 6; j < length; i++) {
	var d = data.data[i];
	if(d.caption == null){
		continue;
	}

	var ts = d.caption.created_time;

    :

	$("#instagram").append(
	$("<div>").addClass("instagram_photo").append($("<a>").attr("href", d.link).attr("target", "_blank").append($("<img>").attr("src", d.images.thumbnail.url).attr("alt", d.caption.text))));
	j++;
}
}

captionがnullの場合は削除された写真とみなして処理を飛ばします。
存在している(削除されていない)写真だけをカウントして、6件に達したところでループを脱出するようにしました。
これで、写真は6件表示されるようになりましたよ。