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.