2012-11-12 32 views
0

所有, 我有以下代码获取Twitter的状态,并显示它给用户:Twitter使用API​​获取用户状态值,是否有限制?

if(! $tweet) { 
    //$format = 'json'; 
    //$contents = file_get_contents("http://api.twitter.com/1/statuses/user_timeline/{$username}.{$format}", 0, $context); 
    //$contents = file_get_contents(" https://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&count={$how_many}", 0, $context); 
    $url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&count={$how_many}"; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $contents = curl_exec($curl); 
    curl_close($curl); 
    if (! empty($contents)) { 
     // Decode it. 
     $tweet = json_decode($contents); 
     // Cache it for next time. 
     //set_transient($id.'-'.$username, $tweet, 60*60*3); // 3 hour cache 
    } 
} 

// Check to make sure we have a tweet and display it. 
if (is_array($tweet) && isset($tweet[0]->id_str)) { 
    do_action('themeblvd_twitter_slider', $tweet, $options, $username, $slider_id); 
} else { 
    $output = '<span class="tweet-icon '.$options['icon'].'"></span>'; 
    $output .= 'We experienced an error with Twitter! Please check back soon for our reviews!'; 
} 
return $output; 

所以基本上我想确定我是否已经获取了一些微博,如果没有去取出它们,然后将它们传回到下面的循环以将它们显示给用户。

<?php 
foreach($tweet as $t){ 
?> 
<li class="slide tight <?php echo $classes; ?>"> 
    <div class="slide-body"> 
     <div class="grid-protection"> 
     <?php 
     echo '<span class="tweet-icon '.$options['icon'].'"></span>'; 
     echo '<a href="http://twitter.com/'.$username.'/status/'.$t->id_str.'" target="_blank">'; 
     echo $t->text; 
     echo '</a>'; 
     ?> 

     </div><!-- .grid-protection (end) --> 
    </div><!-- .slide-body (end) --> 
</li> 
<?php 
} 
?> 

出于某种原因,我收到错误消息,说他们无法显示。如果我将限制保持为10,则它显示的相当一致,没有错误。如果我将限制增加到50或85,我会收到错误消息,指出twitter有问题。 API最近有变化吗?他们有新的限制吗?关于为什么我无法显示85条推文的任何想法?

感谢advace!

回答

0

我发现,实际上你可以决定你是否已经达到限额又或没有,但致电以下网址:

https://api.twitter.com//1/account/rate_limit_status.json

我所做的就是检查实际上是试图在之前这个响应调用用户状态API。我的代码检查速率限制如下所示:

$url_check_limit = "https://api.twitter.com//1/account/rate_limit_status.json"; 
$curl_limit = curl_init(); 
curl_setopt($curl_limit, CURLOPT_URL, $url_check_limit); 
curl_setopt($curl_limit, CURLOPT_RETURNTRANSFER, 1); 
$contents_limit = curl_exec($curl_limit); 
curl_close($curl_limit); 
if (! empty($contents_limit)) { 
    // Decode it. 
    $tweet_limit = json_decode($contents_limit); 
} 

if ($tweet_limit->remaining_hits == "0"){ 
    $no_tweets = true; 
    echo "We've reached out rate limit"; 
}else{ 
    //Execute the Twitter user_status API from my original question 
} 

这使我避免保持通话Twitter的API,如果我打我的极限了。如果我没有达到我的限制,我会在我原来的问题中调用代码,并向用户显示推文。希望这可以帮助别人!

相关问题