У меня есть вопрос о том, как Facebook ограничивает ваши вызовы API.
Ближе к концу этой статьи:http://developers.facebook.com/blog/post/478/facebook говорит:
В дополнение к ограничениям, упомянутым в документации для каждой из таблиц и соединений, перечисленных выше, полезно знать, что максимальное количество результатов, которые мы можем получить перед запуском проверки видимости составляет 5000.
Мне интересно, как можно пролистать такие общедоступные данные. Например, возьмем Шакиру :, она получает много-много лайков на каждой фотографии, которую загружает, этот вызов API:
останавливается на отметке 5000 лайков.
Интересный момент: все эти данные общедоступны, мне не нужно входить в Facebook, чтобы их увидеть. Я знаю, что существуют политики конфиденциальности , как вы используете данные, но это не мой вопрос. Если данные общедоступны, то почему мы не можем получить их все, а если можем, то как?
Основные вопросы::
Можете ли вы получить более 5000 результатов для конкретного вызова API, как в примере выше?
Это последние 5000 лайков? Итак, если вы сразу начали собирать данные об этом посте, а затем возвращались каждые 10 минут или около того, чтобы искать новые лайки, сможете ли вы получить все данные с помощью этого метода предотвращения ограничения в 5000?
Это ограничение на вызовы API, или только на количество результатов, которые они отправляют одному пользователю, или на количество результатов, которые они отправляют обратно для определенного сообщения и т. д.?
Это относится к сообщениям, тегам, комментариям и пейджингу?
Я знаю, что этот вопрос немного открыт, -закончился, но я везде искал ответ, и он плохо документирован. Любая помощь будет здоровой, и я думаю, что многие люди могут обратиться к этой информации в будущем.
ОБНОВЛЕНИЕ:
При выполнении этого вызова API:
вы получаете один результат и, таким образом, достигаете предела (, по крайней мере близкого к нему ). Кто-то предложил использовать 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 КБ в кеше за раз, и они не смогли бы справиться с масштабом, если бы люди обращались к базе данных с таким количеством запросов? Просто предположение.