JavaScript と Graph API を使用して Facebook からアルバム リストを取得しようとしています。私はこのようにやっています:
FB.api('/me/albums', function(response){
//
});
アルバム カバーは、HTML に挿入できる URL ではなく、写真 ID として返されます。したがって、2 番目のステップで URL を取得する必要があります。しかし、アプリケーションの設計上、後で URL を取得して画像を挿入することはできません。アルバム プロパティ (ID、名前、カバー URL) を含む完全なデータ オブジェクトを返す必要があります。私の最後の試みを以下に示します。
FB.api('/me/albums', { fields : 'id,name,count,cover_photo' }, function(response){
if (!response || response.error) {
callback.call(false);
return;
};
var parsed = $(response.data).map(function(){
if (this.count > 0) {
var result = {
aid : this.id,
title : this.name,
cover : this.cover_photo
};
return result;
};
});
for (var i = 0; i < parsed.length; i++) {
(function(i){
FB.api('/' + parsed[i].cover, { type : 'album' }, function(response){
parsed[i].thumb = response.picture;
});
})(i);
};
callback.call(parsed);
});
問題は、ループがカバー クエリを待機せずに先に進み、カバー URL のない戻りオブジェクトを残すことです。それほど難しいことではないと思いますが、十分な解決策を見つけることができません。どんなアイデアでも大歓迎です。