我通过CodeBird PHP使用twitter API在网站上使用Ajax显示推文。我在第一次通话后无法防止重复,因为max_id
显示了包括max_id之后的推文。
看起来很傻,为什么他们这样做,对我来说,但我似乎也找不到其他人问同样的问题。我虽然这会是很多人遇到的事情。这让我觉得我没有做正确的事情。
// Prepare Args
$tw_args = array(
'count' => 5,
'trim_user' => true
);
// If we havea last id, set it
if (isset($last_id)) {
$tw_args['max_id'] = $last_id;
}
// new tweet arr
$tweets = array();
// get raw tweets
$raw_tweets = (array) $cb->statuses_userTimeline($tw_args);
// loop through tweets
for ($i = 0; $i < count($raw_tweets); $i++) {
// Add just the ID and text to our new tweets array
$tmp = array(
'id' => $raw_tweets[$i]->id_str,
'text' => $raw_tweets[$i]->text
);
array_push($tweets, $tmp);
}
// return tweets array
return $tweets;
如何阻止twitter API以与max_id相同的ID返回推文?
答案 0 :(得分:1)
如果我很清楚你要做的是什么,似乎max_id
数组中包含$raw_tweets
推文?
如果是这样,只需在循环中添加一个条件即可将max_id
的推文添加为$tweets
数组的id:
// ...
for ($i = 0; $i < count($raw_tweets); $i++) {
// Check if the current tweet's id match max_id
if($raw_tweets[$i]->id_str == max_id)
continue;
// Add just the ID and text to our new tweets array
$tmp = array(
'id' => $raw_tweets[$i]->id_str,
'text' => $raw_tweets[$i]->text
);
array_push($tweets, $tmp);
}
// ...
答案 1 :(得分:0)
如果您的平台能够使用64位整数,只需从您确定为max_id的任何值中减去1即可。根据API文档here,“如果此调整后的max_id是有效的推文ID,或者如果它与其他用户发布的推文相对应,则无关紧要 - 该值仅用于决定过滤哪些推文“。这样可以防止收到任何重复项。
但是,如果你不能处理64位整数,文档说要跳过这一步,所以我认为没有比ZeusInTexas提供的更简单的解决方法。