從Twitter的REST API我用戶獲取/追隨者功能。 我粘貼了下面的代碼片段。Twitter API - 相同的光標錯誤
我的問題是,我成功地獲得追隨者的ID的時間模式。但是當用戶擁有超過5000-6000名追隨者時,我的結果出錯了。
當我從用戶的個人資料頁面檢查,我看到用戶有5500名追隨者,但是當我運行下面的代碼,大部分時間5500個IDS來,但有時29994追隨者進來$ IDS變量。現在我正在記錄結果有更多的29k追隨者。我看到一些29994追隨者返回的請求,但我找不到答案。
我錯過了什麼在獲得ID - 光標方法?謝謝
編輯:一些調試後,我登錄「$ cursor_archieve」參數,發現了這一點:
*有時next_cursor和previous_cursor來自相同:
Array
(
[0] => -1
[1] => 1400573121087317741
[2] => 1400573121087317741
[3] => 1400573121087317741
[4] => 1400573121087317741
[5] => 1400573121087317741
[6] => 1400573121087317741
)
所以在這種情況下,雖然用戶有7100個跟隨我只得到5000的追隨者
有時光標有順序相同:
陣列
(
[0] => -1
[1] => 1404335879106773348
[2] => 1404341060469987526
[3] => 1404338682006540390
[4] => 1404341060469987526
[5] => 1404335879106773348
[6] => 1404338682006540390
)
我的代碼是這樣的:
public function getIds($user = "someuser"){
$tmhOAuth = new tmhOAuth(array('consumer_key' => YOUR_CONSUMER_KEY,
'consumer_secret' => YOUR_CONSUMER_SECRET,
'user_token' => $atoken1, 'user_secret' => $atoken2,));
$cursor = '-1';
$ids = array();
$cursor_archieve = array();
while(true):
$code=$tmhOAuth->request('GET', $tmhOAuth->url('1/followers/ids'),
array('screen_name' => $user, 'cursor' => $cursor));
if ($code == 200) {
$responseData = json_decode($tmhOAuth->response['response'],true);
$ids = array_merge($ids, $responseData['ids']);
$cursor = $responseData['next_cursor_str'];
$cursor_archieve[] = $cursor;
} else {
return 0;
}
if ($cursor == '0' || count($ids) >= 29000) {
break;
}
endwhile;
return $ids;
}
EDIT2:我應該做「array_unique」刪除重複的ID,否則無法正常使用下一個光標如果previous_cursor =下一個光標或任何其他的選擇嗎? 在每種情況下,用戶都有5500-6500個關注者。所以如果我只帶一個光標,我只能得到第一批5000個追隨者。