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ść.



Comments

Kill3rReaper

Bardzo fajnie i prosto opisany sposób działania OAuth. Kiedy można się spodziewać wydania aplikacji do Twittera Twojego autorstwa? :)

August 25, 2010, 10:05 PM Reply
drastik

Noo ładnie Arturo :) co się nic nie pochwaliłeś że bloga zalozyles?:)

September 10, 2010, 12:17 AM Reply
Pepper

I don’t know who you wrote this for but you helped a broehtr out.

October 10, 2016, 1:55 PM Reply
http://www./

Thanks there are *a lot* of great websites that have an opinion but I appreciate your reliance upon the facts. When I was in College WAY back in 1987 I took a journalism class and learned the fallacy of writing before one checks their facts. Keep up the good work!

November 2, 2016, 4:44 PM Reply
motorrad kfz versicherungen

the price of Gold and Platinum has increased significantly. As a result of the higher prices for precious metals typically used in fine jewelry, a few alternative metals have begun to take center stage for some jewelry

November 3, 2016, 1:05 PM Reply
kredit ohne arbeitgeber

I’m so sorry about Zach. He was a great kid and had an even greater sense of humor. The few times that I did get to meet him alls he and Jake did was make me laugh. My heart goes out to you Byan and Gail. Love, Caitlin Hentges

November 3, 2016, 1:38 PM Reply
http://www./

13f# 15 Mike: JJ lives in his own delusional world, he is blabbering on again this morning about cuts in pay and 401k’s and all the rest. That is all noise but does not address the real restructuring. He is also talking about increased volume in 2013 and 14, again nothing to do with the fundamental changes.fcf

February 12, 2017, 11:23 AM Reply
sparkasse darlehen kündigen

undoubtedly like your web site but you might have to take a appear at the spelling on quite a couple of of your posts. Several of them are rife with spelling issues and I in discovering it really bothersome to inform the reality then once again I will surely come once more once again.

February 16, 2017, 5:07 PM Reply
http://www./

Jalovaara on niin hurmoksessa saarnatessaan, ettei se muista, mitä on puhunut :) Eniten MOT:ssa kirpaisi se lesken kertomus sairaan miehen hyväksikäytöstä. Hyödynnetään toisen hätää omien etujen ajamiseksi.

March 1, 2017, 3:37 AM Reply
car insurance quotes

Vanessa November 14, 2012 Hola Susanita!Have I ever told you how much I love my slow cooker??? This recipe looks awesome and I will try it out for sure! An awesome time saving trick for the slow cooker is ‘baked’ potatoes! Just wrap them in tin foil put on slow for eight hours and they come out perfectly ‘baked’. You can even do this while you make another meal in the slow cooker!

May 1, 2017, 11:04 PM Reply


Comment

Name (required)
Email (required)
Homepage