0

これは私のコードのスリム化されたバージョンです(初期化呼び出しなし)。FB.apiにuntil値を渡して連続して呼び出すたびにlimit/2 が返されることを除いて、すべてが完全に機能します。別のFacebookアカウントを使用して、通話の合間に1分ほど待ってみましたが、問題は解決しません.

返されたオブジェクトの次のパラメーターを確認したところ、URL は、 dataUltimoPostとまったく同じ番号のuntilパラメーターを追加するだけです。URL を呼び出すと、投稿の半分も返されます。

ここここで一貫性のないリターンを持つ他の投稿を見つけましたが、ページングの側面に直接対処するものはありません。偶然にも、私のコードと同じロジックを使用して投稿をページ化するこの投稿に出くわしました。だから私は正しい軌道に乗っていると思います。

機能:

function getPost (success, append) {
    var params = { limit: 25, date_format: 'U' };
    if (append)
        params.until = dataUltimoPost;

    FB.api('/me/home', 'get', params, function (userData) {
        if (userData.data.length > 0)
            dataUltimoPost = userData.data[userData.data.length - 1].created_time - 1;
        success.call(this, userData.data, append);
    });
};

function fillPost(posts, append) {
    var postsHTML = '';
    append = append === true;

    alert('posts.length: ' + posts.length + ' - append: ' + append);
}

関数の呼び出し:

getPost(fillPost); //returns 25
getPost(fillPost, true); //returns 12
getPost(fillPost, true); //returns 1 or 0
4

1 に答える 1

1

25 を要求しても 25 の結果が得られない理由については、Facebook 自身のブログ投稿をご覧ください。

http://developers.facebook.com/blog/post/478/

ここで彼らは、フィルタリングを適用する前に、FQL フィルタリング メカニズムが結果セットを事前に制限していることを明確に認めています。これが何が起こっているかのビジュアルです。

ここに画像の説明を入力

于 2012-06-05T15:53:28.533 に答える