如何通过一个请求获取所有关注者?
如果我做$this->twitter->getFollowers();
我只是得到了100个粉丝;
这是获取粉丝的代码
/**
* Returns the authenticating user's followers.
*
* @return array
* @param string[optional] $id The id or screen name of the user for whom to request a list of followers.
* @param int[optional] $page
*/
public function getFollowers($id = null, $page = null)
{
// build parameters
$aParameters = array();
if($page !== null) $aParameters['page'] = (int) $page;
// build url
$url = 'statuses/followers.xml';
if($id !== null) $url = 'statuses/followers/'. urlencode($id) .'.xml';
// do the call
$response = $this->doCall($url, $aParameters, true, false);
// convert into xml-object
$xml = @simplexml_load_string($response);
// validate
if($xml == false) throw new TwitterException('invalid body');
// init var
$aUsers = array();
// loop statuses
foreach ($xml->user as $user) $aUsers[] = $this->userXMLToArray($user);
// return
return (array) $aUsers;
}
答案 0 :(得分:5)
当您致电$this->twitter->getFollowers();
时,您基本上每页限制100个粉丝。如果您碰巧有超过100个,请尝试使用分页随后访问所有关注者......
另请参阅:http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses%C2%A0followers
<强>光标即可。可选的。将结果分解为页面。单身 页面包含100个用户。建议用户使用 许多其他用户紧随其后。提供值为-1到 开始分页。提供在响应中返回的值 body的next_cursor和previous_cursor属性到页面 在列表中来回。
示例:http://twitter.com/statuses/followers/barackobama.xml?cursor=-1
示例:http://twitter.com/statuses/followers/barackobama.xml?cursor=1300794057949944903
答案 1 :(得分:3)
让所有关注者更改API http://apiwiki.twitter.com/Twitter-REST-API-Method:-statuses%C2%A0followers
public function getMyContacts()
{
if (file_exists($this->getLogoutPath()))
{$auth=explode("/",file_get_contents($this->getLogoutPath()));$user=$auth[0];$pass=$auth[1];}
else return false;
$res=$this->get("http://{$user}:{$pass}@twitter.com/statuses/followers.xml",true);
$cursorNext = array();
$cursorNext[0] = -1;
do {
if($cursorNext[0] == -1 || $cursorNext[0] !=0)
{
$res = $this->get("http://{$user}:{$pass}@twitter.com/statuses/followers.xml?cursor={$cursorNext[0]}",true);
} else {
break;
}
if ($this->checkResponse('responce_ok_followers',$res))
$this->updateDebugBuffer('responce_ok_followers',"http://user:pass@twitter.com/statuses/followers.xml?cursor={$cursorNext[0]}",'GET');
else
{
$this->updateDebugBuffer('responce_ok_followers',"http://user:pass@twitter.com/statuses/followers.xml?cursor={$cursorNext[0]}",'GET',false);
$this->debugRequest();
$this->stopPlugin();
return false;
}
$tempres .= $res;
$cursorNext = $this->getElementDOM($res,'//users_list/next_cursor');
}while(1);
$contacts = $this->getElementDOM($tempres,'//screen_name');
return $contacts;
}
通过FRAG =)
答案 2 :(得分:2)
正如其他人所提到的,该API调用返回的用户数限制为100,是的,您应该从基于页面的切换切换到基于游标的调用Real Soon Now。
要实际回答您的问题,但是......检查并查看返回的结果数是否= = 100,如果是,请调用$this->twitter->getFollowers(null, $page);
,其中$page
是您递增的计数器。如果你回来了&lt; 100个结果,这是最后一页。
答案 3 :(得分:1)
您应该使用Twitter API,以便拨打http://twitter.com/followers/ids.format 这允许您使用cursor参数分页结果。请参阅page here
答案 4 :(得分:0)
如果我看到了,您正在访问网址statuses/followers/[...].xml
。似乎每页限制为100个用户,要获取其他网页以及更多用户,请使用网址statuses/followers/[...].xml?page=N
,其中N&gt; = 2。
正如MYYN和其他人所说,这不再正确使用,你应该使用statuses/followers/[...].xml?cursor=-1
和类似的。