Twitter API:获得关注者+99

时间:2009-12-06 18:03:02

标签: php api twitter oauth

使用twitter API(和OAuth),如果我要呼叫用户关注者,(状态/关注者)我将只返回99个结果。

有没有办法我可以返回99,然后从追随者100再次打电话然后循环通过这种呼叫方式,直到追随者的总数被返回?

或者只返回所有粉丝?

7 个答案:

答案 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.1https://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);