Facebook& #39;s 5000 Post API Limit

У меня есть вопрос о том, как Facebook ограничивает ваши вызовы API.

Ближе к концу этой статьи:http://developers.facebook.com/blog/post/478/facebook говорит:

В дополнение к ограничениям, упомянутым в документации для каждой из таблиц и соединений, перечисленных выше, полезно знать, что максимальное количество результатов, которые мы можем получить перед запуском проверки видимости составляет 5000.

Мне интересно, как можно пролистать такие общедоступные данные. Например, возьмем Шакиру :, она получает много-много лайков на каждой фотографии, которую загружает, этот вызов API:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=0&__after_id=100002349968919

останавливается на отметке 5000 лайков.

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=5000&__after_id=100000881924617

Интересный момент: все эти данные общедоступны, мне не нужно входить в Facebook, чтобы их увидеть. Я знаю, что существуют политики конфиденциальности , как вы используете данные, но это не мой вопрос. Если данные общедоступны, то почему мы не можем получить их все, а если можем, то как?

Основные вопросы::

  1. Можете ли вы получить более 5000 результатов для конкретного вызова API, как в примере выше?

  2. Это последние 5000 лайков? Итак, если вы сразу начали собирать данные об этом посте, а затем возвращались каждые 10 минут или около того, чтобы искать новые лайки, сможете ли вы получить все данные с помощью этого метода предотвращения ограничения в 5000?

  3. Это ограничение на вызовы API, или только на количество результатов, которые они отправляют одному пользователю, или на количество результатов, которые они отправляют обратно для определенного сообщения и т. д.?

  4. Это относится к сообщениям, тегам, комментариям и пейджингу?

Я знаю, что этот вопрос немного открыт, -закончился, но я везде искал ответ, и он плохо документирован. Любая помощь будет здоровой, и я думаю, что многие люди могут обратиться к этой информации в будущем.

ОБНОВЛЕНИЕ:

При выполнении этого вызова API:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=4964&__after_id=100000881924617

вы получаете один результат и, таким образом, достигаете предела (, по крайней мере близкого к нему ). Кто-то предложил использовать FQL, и это может вернуть больше. Но я попытался сделать то же самое на PHP с FQL и получил только 1 запись.

$select = urlencode("SELECT user_id, object_id, post_id FROM like WHERE post_id='5027904559_10150854808869560' LIMIT 1000 OFFSET 4964");
        $fql_query_url = 'https://graph.facebook.com/fql?q='. $select;
        $fql_query_result = file_get_contents($fql_query_url);
        $fql_query_obj = json_decode($fql_query_result, true);

Пока что единственный ответ — «нет», вы всегда ограничены 5000 результатов. И я не думаю/не знаю, помогает ли специальный токен доступа _с каким-то конкретным разрешением.

Еще одно обновление: когда я захожу на страницу Шакиры и нажимаю на «x количество людей, которым это нравится» и начинаю прокручивать список вниз, я также достиг предела. Таким образом, Facebook ограничивает не только возврат API и FQL, но и свои собственные страницы.

Мне было бы интересно узнать, знает ли кто-нибудь, почему? У них есть только 5 КБ в кеше за раз, и они не смогли бы справиться с масштабом, если бы люди обращались к базе данных с таким количеством запросов? Просто предположение.

8
задан chantheman 2 May 2012 в 22:56
поделиться