kminek.pl

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

10 Sep, 2010  |  Artykuły, PHP

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 [1] 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 [2] SimplePie, o której [3] 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ę [4] 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:

możemy wreszcie pobrać wpisy. Należy skorzystać w tym celu z biblioteki [5] 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.

-----

Wydrukowano z: https://www.kminek.pl/zmiany-w-api-twittera/

Lista adresów URL występujących w tekście:

© 2007-2019 kminek.pl