2013-08-09 8 views
16

Ich verfolge eine API und muss eine Base64-Authentifizierung meiner Benutzer-ID und meines Passworts verwenden.Base64-Authentifizierung Python

‚User-ID und Passwort müssen beide verkettet werden und dann Base64 codiert‘

es dann zeigt das Beispiel

'userid:password' 

Es dann zu sagen geht ‚Geben Sie den codierten Wert in einer„Authorization-Header „‘

'zum Beispiel: Authorization: BASIC {Base64-kodiert Wert}'

Wie schreibe ich das in eine Python API Anfrage?

z = requests.post(url, data=zdata) 

Dank

Antwort

21

Sie können die Daten kodieren und die Anforderung, indem Sie folgendermaßen vorgehen:

import requests, base64 

usrPass = "userid:password" 
b64Val = base64.b64encode(usrPass) 
r=requests.post(api_URL, 
       headers={"Authorization": "Basic %s" % b64Val}, 
       data=payload) 

Ich bin nicht sicher, ob Sie die „BASIC“ Wort hinzuzufügen haben in das Autorisierungsfeld oder nicht. Wenn Sie den API-Link bereitstellen, wäre es klarer.

+0

z.B. Um ein Image nach Imgur hochzuladen, sieht der Autorisierungsheader wie folgt aus: '" Client-ID yourClientPublicKey "' mit dem Schlüsselwort "Client-ID" vor den Daten. – Alfageme

+0

Was ist Nutzlast hier? – Dev

+0

@Dev was auch immer der Körper der authentifizierten Anfrage, die Sie senden möchten – Alfageme

29

Die Bibliothek Anfragen hat Basic Auth support und wird automatisch für Sie kodieren. Sie können es, indem Sie die folgenden in einem Python repl testen

from requests.auth import HTTPBasicAuth 
r = requests.post(api_URL, auth=HTTPBasicAuth('user', 'pass'), data=payload) 

Sie diese Codierung indem Sie die folgende bestätigen können.

r.request.headers['Authorization'] 

Ausgänge:

u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4' 
+0

Was ist Nutzlast hier? – Dev