Ich versuche, eine API-Abfrage in Python zu bekommen. Die Befehlszeile
curl --header "Authorization:access_token myToken" https://website.com/id
gibt einige JSON-Ausgabe. myToken ist eine hexadezimale Variable, die durchgehend konstant bleibt. Ich möchte diesen Aufruf von Python aus ausführen, damit ich verschiedene IDs durchlaufen und die Ausgabe analysieren kann. Irgendwelche Ideen? Bevor eine Authentifizierung benötigt wurde, habe ich das mit urllib2 gemacht. Ich habe mir auch das Anforderungsmodul angesehen, konnte aber nicht herausfinden, wie das geht.
Danke vielmals.
python
authentication
curl
access-token
user1895406
quelle
quelle
Antworten:
Das Anforderungspaket verfügt über eine sehr schöne API für HTTP-Anforderungen. Das Hinzufügen eines benutzerdefinierten Headers funktioniert folgendermaßen ( Quelle: offizielle Dokumente ):
>>> import requests >>> response = requests.get( ... 'https://website.com/id', headers={'Authorization': 'access_token myToken'})
Wenn Sie keine externe Abhängigkeit verwenden möchten, sieht dasselbe mit urllib2 der Standardbibliothek folgendermaßen aus ( Quelle: das fehlende Handbuch ):
>>> import urllib2 >>> response = urllib2.urlopen( ... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'})
quelle
Ich hatte das gleiche Problem, als ich versuchte, ein Token mit Github zu verwenden.
Die einzige Syntax, die für mich mit Python 3 funktioniert hat, ist:
import requests myToken = '<token>' myUrl = '<website>' head = {'Authorization': 'token {}'.format(myToken)} response = requests.get(myUrl, headers=head)
quelle
>>> import requests >>> response = requests.get('https://website.com/id', headers={'Authorization': 'access_token myToken'})
Wenn das oben genannte nicht funktioniert, versuchen Sie Folgendes:
>>> import requests >>> response = requests.get('https://api.buildkite.com/v2/organizations/orgName/pipelines/pipelineName/builds/1230', headers={ 'Authorization': 'Bearer <your_token>' }) >>> print response.json()
quelle
Bearer <my_token>
der erste nicht, da die Antwort so ist, als ob die Anfrage nicht authentifiziert wäre.Haben Sie das
uncurl
Paket ausprobiert ( https://github.com/spulec/uncurl )? Sie können es über pip installieren ,pip install uncurl
. Ihre Curl-Anfrage kehrt zurück:>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id" requests.get("https://website.com/id", headers={ "Authorization": "access_token myToken" }, cookies={}, )
quelle
Ich füge einen kleinen Hinweis hinzu: Es scheint, dass das, was Sie als Schlüsselwert eines Headers übergeben, von Ihrem Berechtigungstyp abhängt, in meinem Fall
PRIVATE-TOKEN
header = {'PRIVATE-TOKEN': 'my_token'} response = requests.get(myUrl, headers=header)
quelle