Monthly Archives: August 2010


O OAuth i Twitterze słów kilka(set)
August 15, 2010, 12:10 AM in Qt, Technology

Twittera w sumie używam głównie do śledzenia tego, co robią inni, sam niby też dodaję co jakiś czas aktualizacje, ale czy ktoś to w ogóle czyta, czy to kogoś interesuje? Pewnie średnio. Ale dzięki temu potem łatwiej mi zlokalizować w czasie kiedy pracowałem nad jakimś projektem lub kiedy obejrzałem dany film ;-)

Jedyny problem jaki mam z Twitterem, to brak dobrego klienta na Windowsy. Twitter nie może narzekać na małą ilość klientów, ale bardzo duża ich część albo używa Adobe Air, za którym nie przepadam, albo jest przeładowana graficznie (czy wyszło jakieś rozporządzenie mówiące, że klienci Twittera nie mogą wyglądać jak natywne programy, bo ja chyba o czymś nie wiem). Potrzebuje prosty program z podstawowymi funkcjami, który będzie sobie siedział w tray’u i wyświetlał informację, gdy ktoś doda aktualizację.

Ciągle uczę się Qt to pomyślałem, że dobrym ćwiczeniem będzie napisać taki program samemu.
Zacząłem od znalezienia biblioteki do obsługi API Twittera, znalazłem QTwitLib, zacząłem pisać. Program zaczął nabierać kształtów, w pewnym momencie potrzebowałem coś sprawdzić w dokumentacji API, wchodzę na dev.twitter.com, a tam piękny komunikat “As of June 30, 2010, basic auth will no longer be supported.” sprawdzam czego używa QTwitLib, oczywiście autoryzacji HTTP, no to wypad. Zacząłem szukać innej biblioteki z obsługą nowego sposobu autoryzacji – OAuth (“cóż to za magiczny protokół?”), znalazłem QOAuth (której autorem jest polak ;-) ), zraziła mnie trochę zależność od QCA, ale co tam. Po kilku godzinach prób kompilacji QCA, dałem sobie spokój (później okazało się, że to nie wina QCA, czy tym bardziej QOAuth, ale bug w Qt 4.7 beta 1). Usiadłem do dokumentacji OAuth na dev.twitter.com i po pewnej walce udało mi się wyskrobać własną bibliotekę OAuth, bez potrzeby QCA (QCA było tam głównie potrzebne do wyliczenia sygnatury algorytmem HMAC-SHA1, ja napisałem do tego własną funkcję).

A teraz może w skrócie, OAuth – z czym to się je?
OAuth jest protokołem autoryzacji opracowanym w 2006 roku między innymi przez ludzi z Twittera, daje on dostęp aplikacjom klienckim do działania w imieniu użytkownika (np. publikacja aktualizacji) bez znania jego hasła, użytkownik sam wybiera którym aplikacjom pozwala na dostęp i może to prawo im w każdej chwili odebrać.

Działa to na tej zasadzie: twórca aplikacji (np. ja ;-) ) rejestruje ją u dostarczyciela usługi (np. Twitter) i otrzymuje unikalny klucz (consumer_key) i tajny ciąg znaków (consumer_secret). Zanim aplikacja będzie mogła działać w imieniu użytkownika, musi ona go prosić o autoryzację, w tym celu najpierw wysyła zapytanie o bilon (token) do serwera usługodawcy. Teraz może na chwilę zatrzymajmy się by wytłumaczyć sobie na czym polegają zapytania i po co aplikacji te klucze były. Otóż każde zapytanie musi (oprócz innych ważnych informacji jak wersja OAuth czy czas zapytania) zawierać klucz aplikacji i być podpisane sygnaturą. Sygnatura jest obliczana na podstawie treści zapytania oraz tajnym ciągiem znaków otrzymanym podczas rejestracji aplikacji. Tylko poprawnie podpisane zapytania dostaną poprawną odpowiedź. Metody podpisywania są 3: kluczami RSA, zwykły ciąg znaków (Plaintext) lub właśnie algorytmem HMAC-SHA1. Twitter obsługuje tylko ten ostatni format.

Jeśli dobrze podpisaliśmy nasze zapytanie o token, otrzymamy tymczasowy bilon, on też składa się z klucza (token_key) i tajnego ciągu znaków (token_secret). Mając token, wysyłamy użytkownika pod odpowiednio spreparowany link, pod którym użytkownik zostanie zapytany czy zezwala naszej aplikacji na działanie w jego imieniu. Jeśli wyrazi zgodę otrzyma numer PIN, który powinien wpisać w naszej aplikacji. My, po otrzymaniu PINu, wysyłamy zapytanie, tym razem o stały token. Jeśli znowu wszystko poszło dobrze, otrzymamy token. Zapisujemy go gdzieś i od teraz możemy pobierać aktualizacje znajomych użytkownika, wysyłać aktualizacje na jego konto itd.

Tak w skrócie wygląda OAuth (na przykładzie Twittera), zainteresowanych by wiedzieć więcej, zapraszam tutaj.
Ja wracam do prac na biblioteką i programem, mam zamiar wydać je razem ze źródłem, więc zainteresowanych proszę o cierpliwość.


Początek bloga
August 1, 2010, 11:10 AM in No category

No tak, to mój pierwszy wpis na blogu, a jak wiadomo, pierwsze wpisy są zazwyczaj do kitu. Tak więc i ten jest do kitu, ale potem powinno już być tylko lepiej.

To może żeby totalnie nie marnować tego wpisu powiem (napiszę), że nazywam się Artur Pacholec i jestem programistą aplikacji internetowych (PHP, MySQL), stron WWW (HTML, CSS, JS) oraz aplikacji desktopowych (C++ Qt). W dziale “o mnie” można znaleźć trochę więcej informacji na mój temat.

I to chyba tyle na pierwszy wpis, do następnego razu ;)