经过多次尝试,我终于成功使用 Twitters 新 API(版本1.1)获取推文。我正在使用 PHP TwitterOauth 库。虽然我能够获取推文,但有两件事我不理解:
statuses/user_timeline 的限制为200条推文。我该如何循环遍历结果以获取最多3,200条推文?我读到了一些关于进行多个 GET 请求的信息,但我不确定该如何操作。
似乎获取的推文数量会随机变化,并且很少实际达到参数“count”中指定的数量。这是为什么?
我的应用程序只是让访问者输入用户名并获取该用户的推文。以下是我的代码:
if (isset($_GET['user'])) {
$user = $_GET['user'];
$content = $connection->get("statuses/user_timeline", array('count' => 200, 'exclude_replies' => true, 'screen_name' => $user));?>
$j = 0;
foreach ($content as $tweet) {
echo $j.' '.$tweet->text. '<br />';
$j++;
}
}
更新:在尝试了queremys下面的建议后,我想出了一个非常丑陋的“解决方案”,它有几个主要缺点。至少它显示了最多3,200条推文(以及一些重复)。如果相关的Twitter帐户少于3,200条推文,则结果将看起来很奇怪。无论如何,我只是想分享一下,如果能够启发您就好了。
if (isset($_GET['user'])) {
$user = $_GET['user'];
$content = $connection->get('statuses/user_timeline', array(
'count' => 200, 'exclude_replies' => true, 'screen_name' => $user, 'include_rts' => 1
));
$x = 0;
while ($x < 15) {
$text = array();
foreach ($content as $tweet) {
$text[] = $tweet->id_str;
echo $tweet->text.'<br />';
}
$last_tweet = end($text);
$content = $connection->get('statuses/user_timeline', array(
'count' => 200, 'exclude_replies' => true, 'screen_name' => $user, 'include_rts' => 1, 'max_id' => $last_tweet
));
foreach ($content as $tweet) {
echo $tweet->text.'<br />';
}
$x++;
}
}
Trying to get property of non-object... Undefined offset: -1
。我不理解那行代码的作用,所以也不知道如何解释这个错误信息。 - user1781186$content
转换为数组,使用$content = (array) $content;
进行转换。 - Kerem$content
转换为数组? - user1781186