Poradnik uwierzytelniania

Wprowadzenie

Tweepy wpspiera obydwa sposoby uwierzytelniania - OAuth 1a (aplikacja-użytkownik) oraz OAuth 2 (tylko-aplikacja). Uwierzytelnianie jest obsługiwanie poprzez klasę tweepy.AuthHandler.

Uwierzytelnianie OAuth1a

Tweepy stara się ułatwić tobie korzystanie z OAuth 1a. By rozpocząć proces uwierzytelniania musisz zarejestrować swoją rejestrację klienta na Twitterze. Stwórz nową rejestrację a gdy to zrobisz powinieneś posiadać swój klucz konsumenta i sekret. Nie strać ich, będą ci potrzebne.

Następny krok to stworzenie instancji OAuthHandler. Do instancji tej przekaż swój klucz konsumenta oraz sekret, które zostały ci podane w poprzednim kroku:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

Jeżeli posiadasz aplikacje sieciową i używasz wywołania zwrotnego URL które musi być dostarczone dynamicznie - musisz je także przekazać:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret,
callback_url)

Jeżeli wywołanie zwrotne URL nie będzie zmieniane to najlepiej jest skonfigurować je statycznie na twitter.com gdy ustawiasz swój profil rejestracyjny.

W przeciwieństwie do podstawowego uwierzytelniania musisz wykonać „taniec” OAuth 1a zanim będziesz mógł zacząć używać API. By to zrobić musisz wykonać następujące kroki:

  1. Zdobądź token żądania od Twittera
  2. Przekieruj użytkownika do twitter.com by uwierzytelnić swoją rejestrację
  3. Jeżeli używasz wywołania zwrotnego to Twitter przekieruje użytkownika do ciebie. W innym wypadku użytkownik musi ręcznie dostarczyć ci kod weryfikacyjny.
  4. Wymień token uwierzytelniania na token dostępu.

Pozyskaj token żądania by rozpocząć taniec:

try:
    redirect_url = auth.get_authorization_url()
except tweepy.TweepError:
    print('Error! Failed to get request token.')

To wywołanie żąda token od twittera i zwraca tobie zuwierzytelniony URL, w którym użytkownik musi być przekierowany by być zuwierzytelnionym. Jeżeli dzieje się to w aplikacji komputerowej to możesz trzymać się swojej instancji OAuthHandler póki nie wróci użytkownik. W aplikacji sieciowej używane będzie żądanie wywołania zwrotnego. Dlatego też musisz składować w sesji token żądania, gdyż będzie on potrzebny w środku żadania wywołania zwrotnego URL. Poniżej znajduje się przykład składowania tokenu żądania w sesji:

session.set('request_token', auth.request_token['oauth_token'])

Następnie możesz przekierować użytkownika do URL, który został ci zwrócony z metody get_authorization_url().

Jeżeli jest to aplikacja komputerowa (lub każda inna aplikacja używająca wywołania zwrotnego) to konieczne jest zapytanie użytkownika o „kod weryfikacji”, który twitter dostarczy mu gdy zostaniesz zuwierzytelniony. W aplikacji sieciowej wartość weryfikacyjna będzie dostarczona w żądaniu wywołania zwrotnego od twittera, w formie parametru zapytania GET w URL.

# Example using callback (web app)
verifier = request.GET.get('oauth_verifier')

# Example w/o callback (desktop)
verifier = raw_input('Verifier:')

Ostatnim krokiem jest wymiana tokenu żądania na token dostępu. Token dostępu jest „kluczem” otwierającym skarbiec Twitter API. By pozyskać ten token musisz poczynić następujące kroki:

# Let's say this is a web app, so we need to re-build the auth handler
# first...
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
token = session.get('request_token')
session.delete('request_token')
auth.request_token = { 'oauth_token' : token,
                         'oauth_token_secret' : verifier }

try:
    auth.get_access_token(verifier)
except tweepy.TweepError:
    print('Error! Failed to get access token.')

Warto jest zachować token dostępu na przyszłość. Nie musisz pozyskiwać go na nowo za każdym razem. Na tę chwilę Twitter nie wygasza ważności tokenów, tak więc stają się one nieważne tylko wtedy gdy użytkownik wycofa dostęp dla twojej aplikacji. Składowanie tokenu dostępu zależne jest od twojej aplikacji. W skrócie - musisz składować dwie wartości jako ciąg znaków: klucz i sekret:

auth.access_token
auth.access_token_secret

Możesz wrzucić je do bazy danych, pliku lub gdziekolwiek składujesz dane. By ponownie zbudować OAuthHandler z zapisanych tokenów, musisz wykonać następujące kroki:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(key, secret)

Twój OAuthHandler jest teraz wyposażony w token dostępu - możesz zacząć pracę:

api = tweepy.API(auth)
api.update_status('tweepy + oauth!')

Uwierzytelnianie OAuth 2

Tweepy wspiera także uwierzytelnianie OAuth 2. Jest to metoda uwierzytelniania, w której aplikacja wysyła żądania API bez kontekstu użytkownika. Używaj tej metody jeżeli potrzebujesz dostępu tylko do publicznych danych typu do-odczytu.

Tak jak w przypadku OAuth 1a, na początku zarejestruj swojego klienta i zdobądź klucz konsumenta oraz sekret.

Następnie stwórz instancję AppAuthHandle, przekazując swój klucz konsumenta oraz sekret:

auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)

Po otrzymaniu tokenu nosiciela możesz w końcu rozpocząć pracę:

api = tweepy.API(auth)
for tweet in tweepy.Cursor(api.search, q='tweepy').items(10):
    print(tweet.text)