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