Zmiany w sposobie korzystania z API Twitter-a Grzegorz Wójcik

Ostatnio ze zdziwieniem zauważyłem, że moje ostatnie wpisy z Twittera nie pojawiają się w napisanym przeze mnie Twitter-owym boxie na głównej stronie kminek.pl. Wizyta na dev.twitter.com nie pozostawiała złudzeń, co do przyczyny takiego stanu rzeczy:

August 31, 2010 – Basic Auth has been deprecated. All applications must now use OAuth.

Do tej pory skrypt na kminek.pl pobierał co godzinę ostatnie wpisy z mojego konta na Twitterze i umieszczał je w WordPress-owej bazie jako posty w odpowiedniej kategorii. Wpisy na moim koncie nie są publiczne, dlatego ich pobranie wymaga autoryzacji. Działo się to w ten sposób:

  1. $feed = new SimplePie();
  2. $feed->set_feed_url(
  3. 'http://username:password@twitter.com/statuses/user_timeline/kminek_pl.rss'
  4. );
  5. $feed->init();
  6. $tweets = $feed->get_items();

Korzystam z biblioteki SimplePie, o której pisałem jakiś czas temu. Parsuje ona RSS do postaci łatwych w manipulacji z poziomu PHP obiektów/tablic. Niemniej jednak migracja Twitter-owego API na protokół OAuth sprawiła, że powyższy kod przestał działać.

W dużym skrócie OAuth to po prostu kolejny sposób autoryzacji z serwerem, za pomocą którego zewnętrzna aplikacja kliencka uzyskuje dostęp do prywatnych zasobów danego użytkownika w jakimś serwisie (w moim przypadku tymi zasobami są moje wpisy na Twitter-owym koncie) – przy czym dzieje się bez potrzeby użycia mojego loginu i hasła. Pierwszym krokiem jest zalogowanie się na Twitterze i przejście na stronę dev.twitter.com, gdzie możemy dodać nowa aplikację do naszego konta:

screen1

W polu Default Access Type określamy, czy nasza aplikacja ma mieć dostęp tylko do odczytu (Read-only), czy chcemy mieć również możliwość modyfikacji i dodawania za jej pośrednictwem danych (Read & Write). Określamy również typ naszej aplikacji (Application Type) – definiujemy, czy nasza aplikacja jest aplikacją pracująca w przeglądarce internetowej (Browser) czy jest to aplikacja wykonywalna, instalowana w systemie użytkownika (Client). Po utworzeniu aplikacji otrzymujemy do niej ‘klucze’, którymi podpisywane będą nasze requesty. Klucze znajdują się na stronie Application Details:

screen2

Będziemy potrzebowali wartości Consumer Key i Consumer Secret. Ostatnią rzeczą jest wizyta na stronie My Access Token:

screen3

Uzbrojeni w wartości:

  • Consumer Key
  • Consumer Secret
  • Access Token
  • Access Token Secret

możemy wreszcie pobrać wpisy. Należy skorzystać w tym celu z biblioteki twitteroauth, która udostępnia interfejs komunikacji z API Twitter-a za pomocą OAuth. Nowy mechanizm pobierania wpisów prezentuje się następująco:

  1. define('CONSUMER_KEY', 'vcxcGUSfDggfRfKrIBJzw');
  2. define('CONSUMER_SECRET', 'oKu1cPQaWgj31rgd713FZC9tFP9UXwUnGHIdDI6PU');
  3. define('OAUTH_TOKEN', '39213903-huBoe9Udd69aeNuzdWogGofqpLdr3TQcbw3dNf8f2');
  4. define('OAUTH_TOKEN_SECRET', '5n3zp1k08ydneoIdH9qVusssCGsQyplqFQVdOfdIe');
  5.  
  6. require_once('twitteroauth/twitteroauth.php');
  7.  
  8. $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET);
  9.  
  10. $connection->format = 'rss';
  11. $rss = $connection->get('statuses/user_timeline');
  12.  
  13. $feed = new SimplePie();
  14. $feed->set_raw_data($rss);
  15. $feed->init();
  16. $tweets = $feed->get_items();

Jak widać, SimplePie nie pobiera już RSS-a bezpośrednio z Twitter-a, ale dostaje go już jako string, który zwraca biblioteka twitteroauth (linia 14). Powyższy przykład jest najprostszą integracją wykorzystującą tylko jedno konto i przypisany do niego access token.

Czytaj więcej:
Artykuły » PHP
Tagi:
, ,

Grzegorz Wójcik

Grzegorz Wójcik jest założycielem internetowego magazynu kminek.pl. Pasjonat i twórca lekkich, dostępnych i użytecznych stron internetowych budowanych w oparciu o standardy sieciowe i najlepsze praktyki. Prywatnie wielki miłośnik ambitnego kina sci-fi oraz grunge-rocka z lat 90.

Zobacz wszystkie artykuły tego autora (15)

Dodaj komentarz * pola obowiązkowe

 
 

Dozwolone tagi HTML: <strong> <em> <a href="" title=""> <code> <pre lang=""> <blockquote cite="">

Komentarze są moderowane. Mile widziane wpisy wnoszące nowe, ciekawe informacje do omawianego tematu
lub sygnalizujące ewentualne błędy merytoryczne. Wszelkie przejawy spamu lub nieetycznego zachowania bedą
karane blokadą adresu IP/domeny.