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

0

Вот уменьшенная версия моего кода (без вызовов инициализации). Все работает отлично, за исключением того, что каждый последующий звонок, который я делаю, передается в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   ответ
1

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

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

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

enter image description here

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

Похожие вопросы