使用twitter API(和OAuth),如果我要呼叫用户关注者,(状态/关注者)我将只返回99个结果。
有没有办法我可以返回99,然后从追随者100再次打电话然后循环通过这种呼叫方式,直到追随者的总数被返回?
或者只返回所有粉丝?
答案 0 :(得分:4)
您需要按照in the API documrnation所述指定游标参数。例如。指定cursor = -1以请求第一页,然后使用在第一个响应中返回的next_cursor值:
http://twitter.com/statuses/followers/barackobama.xml?cursor=-1
http://twitter.com/statuses/followers/barackobama.xml?cursor=1300794057949944903
答案 1 :(得分:3)
<?php
$trends_url = "http://api.twitter.com/1/statuses/followers/fawadghafoor.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $trends_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curlout = curl_exec($ch);
curl_close($ch);
$response = json_decode($curlout, true);
foreach($response as $friends){
$thumb = $friends['profile_image_url'];
$url = $friends['screen_name'];
$name = $friends['name'];
?>
<a title="<?php echo $name;?>" href="http://www.twitter.com/<?php echo $url;?>"><img class="photo-img" src="<?php echo $thumb?>" border="0" alt="" width="40" /></a>
<?php } ?>
答案 2 :(得分:1)
确保您使用的是正确的电话。 followers/ids
一次为您提供5000个(但它只是一个ID列表)。此调用也使用光标让您逐步浏览用户页面。当你拥有它们时,你会得到零回报。
答案 3 :(得分:1)
Twitter API限制我们使api调用方法关注者/ ids是每15分钟15个请求。如果你做的超过这个api将给你一个错误消息,达到速率限制。
有关twitter API速率限制的更多信息 访问 - https://dev.twitter.com/docs/rate-limiting/1.1和https://dev.twitter.com/docs/rate-limiting/1.1/limits
答案 4 :(得分:0)
Twitter每小时只允许一定数量的API请求,而我认为分钟。您可能无法一次检索超过99个请求。
答案 5 :(得分:0)
虽然我不久前问过这个问题,但我最近又回来建立了一些非常类似的东西(+新的编程技巧)。
我注意到Twitter API有一种方法可以在一个请求中获得所有的用户关注者(或关注者)用户ID。我发现最好的方法是将array_chunk
ID分成100个批次(并且只占用前30个阵列,因为我不想在那个小时使用所有用户api请求 - 他们可能想要实际发推文!)。然后有一个方法,允许你最多100个用户userinfo(从当前认证用户的视图)所以我只是做一个循环(在中间睡一会儿)然后你有30,000个推特粉丝!
我建议在队列系统中异步执行此操作,就好当您在用户请求站点上的页面时动态执行此操作时,它可能非常慢并且您可能容易出现HTTP超时。也像地狱一样缓存它们!
抱歉,我没有发布任何代码,但希望这个思考过程能帮助某人:)
答案 6 :(得分:0)
$cursor = -1;
$account_from = 'twitter_account';
do
{
$json = file_get_contents('http://api.twitter.com/1/statuses/followers/' . $account_from .'json?cursor=' . $cursor);
$accounts = json_decode($json);
foreach ($accounts->users as $account)
{
array(
':twitter_id' => $account->id_str,
':account' => $account->screen_name,
':description' => $account->description,
);
}
$cursor = $accounts->next_cursor;
}
while ($cursor > 0);