2012-12-11 19 views
25

Próbuję uzyskać zapytanie API do Pythona. Wiersz poleceniaŻądanie Pythona z uwierzytelnianiem (access_token)

curl --header "Authorization:access_token myToken" https://website.com/id 

podaje niektóre dane wyjściowe json. myToken jest zmienną szesnastkową, która pozostaje stała w całym tekście. Chciałbym wykonać to wywołanie z Pythona, aby móc przeglądać różne identyfikatory i analizować wyniki. Jakieś pomysły? Zanim uwierzytelnienie było potrzebne, zrobiłem to za pomocą urllib2. Przyjrzałem się również modułowi wniosków, ale nie mogłem wymyślić, jak to zrobić.

Wielkie dzięki.

+0

Ustawianie token uwierzytelniający dla całej sesji: https://stackoverflow.com/a/47043335/911945 –

Odpowiedz

49

Pakiet requests ma bardzo ładny API dla żądań HTTP, dodając niestandardowy nagłówek działa tak (source: official docs):

>>> import requests 
>>> response = requests.get(
... 'https://website.com/id', headers={'Authorization': 'access_token myToken'}) 

Jeśli nie chcesz korzystać z zewnętrznego uzależnienia, to samo przy użyciu urllib2 standardowej biblioteki wygląda następująco (source: the missing manual):

>>> import urllib2 
>>> response = urllib2.urlopen(
... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'}) 
+0

Dzięki za odpowiedź . Próbowałem obu implementacji i otrzymałem błąd HTTP 401: Nieautoryzowany. Jednak linia poleceń działa dobrze. Nigdy nie pracowałem z tokenami dostępu, więc dla jasności: token, który mam, to 40 cyfr formularza 3f4264ff itp. – user1895406

+1

Dziwne. Co mnie trochę boli, to dwukropek w nagłówku ... ach! Może ja (lub obaj;) po prostu czytamy to źle. Nagłówek może mieć nazwę "Autoryzacja" i jego ** wartość **, a następnie będzie "access_token long_hexadecimal_string". Chcesz dać temu spin? – wosc

+0

który działał! Dziękuję bardzo. to, co napisałem, to: url = 'https://website.com/id' head = {'Authorization': 'access_token hex_string'} res = requests.get (adres URL, nagłówek = nagłówek) – user1895406

1

miałem ten sam problem, gdy próbuje użyć token z Github.

Jedynym składnia, który pracował dla mnie z Python 3 jest:

import requests 

myToken = '<token>' 
myUrl = '<website>' 
head = {'Authorization': 'token {}'.format(myToken)} 
response = requests.get(myUrl, headers=head) 
Powiązane problemy