Prosty widżet w Twitter API

Napiszemy prosty widżet wyświetlający tweety danego użytkownika. Wykorzystamy bibliotekę cURL. Na początek odwiedźmy dokumentację Twitter API. Dowiemy się z niej jak pobrać 20 ostatnich wpisów określonego użytkownika. Pobierzemy najnowsze tweety php_net. Url, z którym się mamy połączyć będzie miał postać: http://api.twitter.com/1/statuses/user_timeline/php_net.json, gdzie json (może to być również xml, rss lub atom) jest formatem zwracanych danych.

 $hand = curl_init();
 curl_setopt($hand,CURLOPT_URL,'http://api.twitter.com/1/statuses/user_timeline/php_net.json');
 curl_setopt($hand, CURLOPT_RETURNTRANSFER, true);
 $data=curl_exec($hand);
 $info = curl_getinfo($hand);
 curl_close($hand);
Ważnym elementem jest ustawienie opcji CURLOPT_RETURNTRANSFER na true. Spowoduje to, że zwracane dane można zapisać pod zmienną i nie są one wyświetlane bezpośrednio. Za pomocą funkcji curl_getinfo() w zmiennej $info zapisujemy informacje na temat ostatniego transferu. Będzie to tablica asocjacyjna, której indeksami są np. http_code czy content_type. Dzięki tej tablicy sprawdzamy jaki jest kod odpowiedzi. Jeśli jest 200 to przetworzone do tablicy (funkcją json_decode()) dane zapisujemy pod zmienną $tweets.
if ($info['http_code'] == 200) {
        $tweets = json_decode($data, true);
    }
    else if ($info['http_code'] == 401) {
        die('Błąd uwierzytelniania');
    }
    else {
        die('Błąd żądania');
    }
Wyświetlenie danych polega na wykonaniu prostej pętli. Zawsze zanim zaczniemy pisać pętlę foreach wyświetlmy tablicę za pomocą funkcji print_r(). Zobaczymy od razu jakimi indeksami możemy dysponować. Oto np. fragment tablicy (widoczny jest jeden wpis).
Array
(
    [0] => Array
        (
            [favorited] =>
            [in_reply_to_user_id] =>
            [truncated] =>
            [source] => <a href="http://itunes.apple.com/app/twitter/id333903271?mt=8" rel="nofollow">Twitter for iPhone</a>
            [created_at] => Thu Jun 24 21:16:30 +0000 2010
            [coordinates] =>
            [in_reply_to_screen_name] =>
            [contributors] =>
            [user] => Array
                (
                    [profile_sidebar_fill_color] => e0e0ff
                    [description] => An aggregation of and for php coders from twitter.
                    [location] => Around the World
                    [profile_background_tile] =>
                    [profile_image_url] => http://a1.twimg.com/profile_images/68979870/php_normal.png
                    [statuses_count] => 45
                    [profile_sidebar_border_color] => 999999
                    [profile_use_background_image] => 1
                    [followers_count] => 10736
                    [screen_name] => php_net
                    [contributors_enabled] =>
                    [lang] => en
                    [created_at] => Tue Dec 30 04:23:03 +0000 2008
                    [friends_count] => 81
                    [geo_enabled] =>
                    [profile_background_color] => 9999cc
                    [favourites_count] => 0
                    [following] => 1
                    [verified] =>
                    [profile_text_color] => 000000
                    [protected] =>
                    [time_zone] => Berlin
                    [name] => php.net
                    [profile_link_color] => 000099
                    [url] => http://php.net/
                    [id] => 18469707
                    [notifications] =>
                    [profile_background_image_url] => http://a1.twimg.com/profile_background_images/3839036/php.gif
                    [utc_offset] => 3600
                )

            [place] =>
            [geo] =>
            [id] => 16962064314
            [in_reply_to_status_id] =>
            [text] => PHP is proud to announce TestFest 2010. http://www.php.net/index.php#id2010-06-23-1
        )
Pętla foreach przedstawia się następująco.
foreach($tweets as $tweet)
{
   echo '<div class="tweet">
   <img src="'.htmlspecialchars($tweet['user']['profile_image_url']).'" />
   '.htmlspecialchars($tweet['text']).'</div>';
}
Można w urlu, z którym się łączymy podać dodatkowe parametry np. ilość pobranych tweetów http://api.twitter.com/1/statuses/user_timeline/php_net.json?count=10. Wyświetlimy teraz liczbę osób śledzących php_net. W tym celu należy się połączyć z http://api.twitter.com/1/users/show/php_net.json Po przetworzeniu danych tak jak dla poprzedniego urla, łatwo sprawdzimy, że liczba osób śledzących znajduje się pod kluczem followers_count. Kod całego programu - widżet twitter api.