2014-01-27 70 views
4

我想在instagram中關注用戶標識列表。 我做了列表,當我嘗試使用API​​來發送後續請求時,我得到這個錯誤: 客戶端請求的數量已達到上限(代碼:400)如何關注使用instagram API的用戶而不受限制率問題?

開發者文檔說: 「你被限制在5000個請求每個小時每個access_token或client_id整體。「

但是,當我得到這個錯誤,我的代碼幾乎沒有遵循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"; 
} 

感謝很多:)

+1

儘管沒有達到API限制,我仍然得到相同的錯誤。看起來,新應用可能會受到懲罰,並且不允許關注用戶。 –

+0

您是否有多個應用程序,請嘗試使用其他應用程序中的令牌,密鑰並查看是否有同樣的問題。 –

+0

@MetablocksCorp不,我在PHP中使用帶CURL函數的API。 – Sepehrooo

回答

1

注意,該API抱怨請求,不如下。您可能正在關注50位用戶,但您的API請求數超過了5000個。使用您當前的代碼,只需要刷新100次頁面即可達到此限制。可能聽起來像很多刷新,但如果你正在調試/開發代碼,那麼假設你可以相對容易地超過100個刷新閾值是合理的。

爲了緩解這個問題,如果你仍然在工作/調試這段代碼,然後將下面的數從50減少到1或2.一旦你的代碼工作,然後恢復前面的數字如下。我建議你緩存5分鐘或10分鐘的返回對象。這樣你就不用擔心超過API的限制。

+0

你是對的,所以現在如果可能的話,我想知道每小時有多少人可以跟隨,所以我可以睡一覺();函數在我的PHP代碼,直到極限重置。我在文檔中搜索了很多,以瞭解每小時我可以擁有多少個,但沒有運氣! 此外,如果有每天跟隨限制,我想知道:) 從邏輯上說,他們不應該讓用戶過度使用api,他們應該已經爲後續設置了「每小時」和「每日」限制。 .. – Sepehrooo

+0

你不需要使用sleep(),只需發出請求並緩存它。將緩存設置爲在5分鐘後過期,並在其過期後發出新請求並更新緩存。 – Rijndael

+0

謝謝一堆:) – Sepehrooo

4

我對API的關係端點的經驗是,你被限制在每小時約160個請求。這似乎與所有操作共享(遵循/取消關注/阻止/取消阻止/批准/拒絕)。我一直無法找到任何能夠讓您事先確定在超出限制之前剩餘多少請求(與總體請求限制中的X-Ratelimit-Remaining標題不同),並且我注意到任何嘗試將使用端點添加到您的請求計數,無論它是否成功。

因爲我的特定應用程序正在同時爲多個人處理,所以我以小塊(約50個請求)處理,當我完成一個塊時,或者如果我在塊內達到速率限制,我將轉到另一個用戶在回來之前一段時間(通常約10-15分鐘)。

我想API限制是per-appid/clientkey,這就是爲什麼儘管達到你的限制,你仍然可以在Instagram應用上關注用戶的原因。