Вызов ленты новостей Facebook (меня / дома) с параметром до, возвращает лимит / 2 каждый последующий вызов

Вот уменьшенная версия моего кода (без вызовов инициализации). Все работает отлично, за исключением того, что каждый последующий звонок, который я делаю, передается вuntil значение вFB.api, возвращает мне лимит / 2. Я пытался подождать 1 минуту между вызовами, используя разные учетные записи Facebook, но это не помогло.

Я проверилnext параметр в возвращаемом объекте, а URL просто добавляетuntil параметр с точно таким же номером, как мойdataUltimoPost, Когда я звоню по 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

Ответы на вопрос(1)

Решение Вопроса

Вот сообщение в блоге от самих Facebook по той причине, что вы не получаете 25 результатов при запросе 25.

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

Здесь они ясно признали, что их механизм фильтрации FQL предварительно ограничивает набор результатов ДО применения фильтрации. Вот изображение того, что происходит.

enter image description here

 07 июн. 2012 г., 22:08
Да, что-то не так с этим. См. Статью блога, где Facebook публично признает наличие некорректного, нестандартного способа фильтрации и ограничения своих наборов результатов. Все в порядке в этой статье блога.
 mateuscb06 июн. 2012 г., 17:26
Поймите, все еще чувствуйте, что что-то не так, когда используете ограничения с до. В частности, как указано в моем примере, что, уменьшая предельное значение, я получаю другую сумму. С другой стороны, как бы непоследовательно это ни звучало, при первом вызове я всегда получаю свой лимит.
 06 июн. 2012 г., 00:19
Facebook признает, что поиск через их API не соответствует обычным нормам. Зная, что фильтрация и ограничение происходят в неправильном порядке, вы можете быстро увидеть, где могут быть отключены #. Изображение, если многие из исключенных результатов были в начале набора результатов. Таким образом, вам может показаться, что результаты начинаются с 5/1, когда фактические результаты действительно были начаты с 4/26, но это оторвалось рано. Запросы с разными ограничениями дадут разные результаты. Черт, даже один и тот же запрос, выполненный x раз, может привести к разным # результатам (хорошо документировано в stackoverflow).
 mateuscb05 июн. 2012 г., 21:56
Спасибо за ссылку, я тоже читал эту статью. Проблема, однако, заключается в том, что это не ограничивает меня на основе фильтров. но делать что-то странное при использовании до / предел. Например, если я установил лимит в 25 и выполнил код, я получил бы следующие значения 25,12,7,0; всего 44. Но если я установлю ограничение на 11, я получу 11, 11, 9 на общую сумму 31. Так что, если бы это была простая фильтрация, я бы получил те же итоги. Правильный?

Ваш ответ на вопрос