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.
