2013-08-09 8 views
16

Sto seguendo una API e ho bisogno di utilizzare un'autenticazione Base64 del mio ID utente e password.Base64 Python di autenticazione

'ID utente e password devono essere entrambi concatenati e quindi Base64 codificato'

poi mostra l'esempio

'userid:password' 

Si procede poi a dire 'fornire il valore codificato in una "intestazione Autorizzazione "'

'per esempio: Autorizzazione: BASIC {valore con codifica Base64}'

Come si scrive in una richiesta API python?

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

Grazie

risposta

21

È possibile codificare i dati e fare la richiesta nel modo seguente:

import requests, base64 

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

Non sono sicuro se hai per aggiungere la parola "BASIC" a il campo Autorizzazione o meno. Se fornisci il link API, sarebbe più chiaro.

+0

esempio Per caricare un'immagine su Imgur, l'intestazione Autorizzazione appare come segue: "Client-ID yourClientPublicKey" 'con la parola chiave" Client-ID "prima dei dati. – Alfageme

+0

cos'è il payload qui? – Dev

+0

@Dev qualunque sia il corpo della richiesta autenticata che si desidera inviare – Alfageme

29

La libreria di richieste ha Basic Auth support e la codificherà automaticamente. È possibile verificare il lavoro svolto eseguendo il seguente in un REPL python

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

È possibile confermare questa codifica digitando quanto segue.

r.request.headers['Authorization'] 

uscite:

u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4' 
+0

qual è il carico utile qui? – Dev