2012-11-12 30 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,如果我打我的極限了。如果我沒有達到我的限制,我會在我原來的問題中調用代碼,並向用戶顯示推文。希望這可以幫助別人!

相關問題