我想在instagram中关注用户ID列表.我做了列表,当我尝试使用api发送跟随请求时,我收到此错误:达到客户端请求限制(代码:400)
开发人员文档说:"每个access_token或client_id整体限制为每小时5000个请求."
但是当我收到此错误时,我的代码几乎没有跟踪50个用户ID!
还有一件事,当我收到这个错误时,我试图在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";
}
Run Code Online (Sandbox Code Playgroud)
非常感谢 :)
小智 5
我对API的关系终结点的经验是,每小时的请求数量限制在160个左右。这似乎与所有操作(关注/取消关注/阻止/取消阻止/批准/拒绝)共享。我找不到任何可以提前确定超出限制的剩余请求的内容(与总请求限制中的X-Ratelimit-Remaining标头不同),并且我注意到任何尝试使用端点将成功添加到您的请求计数中。
因为我的特定应用程序正在同时处理多个人,所以我会分小块处理(大约50个请求),当我完成一个块时,或者如果我在块中达到速率限制,我就会转移到另一个用户一段时间(通常是大约10到15分钟)。
我想API的限制是按应用程序/客户端密钥,这就是为什么尽管达到限制仍可以在instagram应用程序上关注用户的原因。
请注意,API 抱怨requests,而不是 follow 。您可能正在关注 50 个用户,但您发出的 API 请求超过 5000 个。使用您当前的代码,只需刷新 100 次页面即可达到该限制。可能听起来需要大量刷新,但如果您正在调试/开发代码,那么可以假设您可以相对轻松地超过 100 次刷新阈值。
为了缓解这个问题,如果您仍在工作/调试此代码,请将关注数量从 50 减少到 1 或 2。一旦您的代码正常运行,请恢复之前的关注数量。我建议您也缓存返回对象,时间为 5 或 10 分钟。这样您就无需担心超出 API 限制。