Как я могу следить за пользователями с помощью API instagram без проблемы с лимитной ставкой?


Я хочу следить за списком идентификаторов пользователей в instagram. Я составил список, и когда я пытаюсь отправить следующий запрос с помощью api, я получаю эту ошибку: Достигнут лимит запросов клиента (код: 400)

В документации разработчика говорится: "Вы ограничены 5000 запросами в час на access_token или client_id в целом"

.

Но когда я получаю эту ошибку, мой код едва ли соответствует 50 идентификаторам пользователей!

И еще одно, когда я получил эту ошибку, я попытался следить за людьми в приложении instagram прямой (не используя api), и не было никаких проблем!

Это часть моего кода, которая выдает эту ошибку:

foreach ($usersArr as $user) {
$i++;
$url = 'https://api.instagram.com/v1/users/'.$user->id.'/relationship?access_token='. $accessToken;
$data = 'action=follow';
$resultObj = json_decode(sendPostData($url, $data));
$responseCode = $resultObj->meta->code;
$errorMsg = $resultObj->meta->error_message;
if ($responseCode != 200)
    echo "\"" . $errorMsg . "\" AT " . date('Y-m-d H:i:s') . "\n\n";
while ($responseCode != 200){
    sleep(60);
    $resultObj = json_decode(sendPostData($url, $data));
    $responseCode = $resultObj->meta->code;
    if ($responseCode != 200) {
        $errorMsg = $resultObj->meta->error_message;
        echo "STILL \"" . $errorMsg . "\" AT " . date('Y-m-d H:i:s') . "\n\n";
    }
    elseif($responseCode == 200){
        echo "Limit Finished At: " . date('Y-m-d H:i:s') . "\n\n";
        break;
    }
}
echo "User NO. " .$i . " has been followed!" . "\n\n";
}

Большое спасибо:)

Author: Sepehrooo, 2014-01-28

2 answers

Обратите внимание, что API жалуется на запросы , а не следует. Вы можете следить за 50 пользователями, но вы сделали запросы API, которые превышают 5000. С вашим текущим кодом вам потребуется всего 100 обновлений страниц, чтобы достичь этого предела. Может показаться, что много обновлений, но если вы отлаживаете/разрабатываете код, то вполне вероятно предположить, что вы можете с относительной легкостью превысить порог обновления 100.

Чтобы устранить эту проблему, если вы все еще работаете/отлаживаете затем этот код уменьшает количество подписок с 50 до 1 или 2. Как только ваш код заработает, восстановите предыдущее количество подписок. Я бы рекомендовал вам также кэшировать возвращаемые объекты в течение 5 или 10 минут. Таким образом, вам не нужно будет беспокоиться о превышении ограничений API.

 1
Author: Rijndael, 2014-01-28 01:10:47

Мой опыт работы с конечной точкой связи API заключается в том, что вы ограничены примерно 160 запросами в час. Похоже, что это разделяется со всеми действиями (следовать/отменять/блокировать/разблокировать/одобрить/запретить). Я не смог найти ничего, что позволило бы вам заранее определить, сколько запросов вы оставили, прежде чем превысите свой лимит (в отличие от заголовка X-Ratelimit-Remaining для общего лимита запросов), и я заметил, что любая попытка использовать конечную точку добавляется к вашему количеству запросов, независимо от того, будет ли он успешным или нет.

Поскольку мое конкретное приложение обрабатывает одновременно несколько пользователей, я обрабатываю небольшие фрагменты (около 50 запросов), и когда я заканчиваю фрагмент или достигаю предела скорости в пределах фрагмента, я перехожу к другому пользователю на некоторое время (обычно около 10-15 минут), прежде чем вернуться.

Я полагаю, что ограничение API составляет для каждого приложения/клиентского ключа, поэтому вы можете следить за пользователями в приложении instagram, несмотря на то, что достигли вашего предел.

 4
Author: mykel, 2014-01-28 12:12:11