Je suis une API et je dois utiliser une authentification Base64 de mon ID utilisateur et de mon mot de passe.
'L'ID utilisateur et le mot de passe doivent être concaténés puis encodés en Base64'
il montre ensuite l'exemple
'userid:password'
Il continue ensuite à dire "Fournir la valeur codée dans un" en-tête d'autorisation ""
'par exemple: Autorisation: BASIC {valeur encodée en Base64}'
Comment écrire ceci dans une demande api python?
z = requests.post(url, data=zdata )
Merci
Vous pouvez encoder les données et faire la demande en procédant comme suit:
import requests, base64
usrPass = "userid:password"
b64Val = base64.b64encode(usrPass)
r=requests.post(api_URL,
headers={"Authorization": "Basic %s" % b64Val},
data=payload)
Je ne sais pas si vous devez ajouter le mot "BASIC" dans le champ d'autorisation ou non. Si vous fournissez le lien API, ce serait plus clair.
La bibliothèque de requêtes a prise en charge de l'authentification de base et la codera automatiquement pour vous. Vous pouvez le tester en exécutant ce qui suit dans un python repl
from requests.auth import HTTPBasicAuth
r = requests.post(api_URL, auth=HTTPBasicAuth('user', 'pass'), data=payload)
Vous pouvez confirmer cet encodage en tapant ce qui suit.
r.request.headers['Authorization']
les sorties:
u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4'
Avec python3, j'ai trouvé une solution qui fonctionne pour moi:
userpass = username+":"+password
endcoded_u = base64.b64encode(userpass.encode("ascii")).decode("ascii")
headers = {"Authorization" : "Basic %s" % encoded_u}