Estoy tratando de obtener una consulta de API en Python. La linea de comando
curl --header "Authorization:access_token myToken" https://website.com/id
da una salida json. myToken es una variable hexadecimal que permanece constante en todo momento. Me gustaría hacer esta llamada desde Python para poder recorrer diferentes identificadores y analizar la salida. ¿Algunas ideas? Antes de que se necesitara la autenticación, lo hice con urllib2. También eché un vistazo al módulo de solicitudes, pero no pude averiguar cómo hacerlo.
Muchas gracias.
python
authentication
curl
access-token
usuario1895406
fuente
fuente
Respuestas:
El paquete de solicitudes tiene una API muy agradable para solicitudes HTTP, agregar un encabezado personalizado funciona así ( fuente: documentos oficiales ):
>>> import requests >>> response = requests.get( ... 'https://website.com/id', headers={'Authorization': 'access_token myToken'})
Si no desea usar una dependencia externa, lo mismo que usa urllib2 de la biblioteca estándar se ve así ( fuente: el manual que falta ):
>>> import urllib2 >>> response = urllib2.urlopen( ... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'})
fuente
Tuve el mismo problema al intentar usar un token con Github.
La única sintaxis que me ha funcionado con Python 3 es:
import requests myToken = '<token>' myUrl = '<website>' head = {'Authorization': 'token {}'.format(myToken)} response = requests.get(myUrl, headers=head)
fuente
>>> import requests >>> response = requests.get('https://website.com/id', headers={'Authorization': 'access_token myToken'})
Si lo anterior no funciona, intente esto:
>>> import requests >>> response = requests.get('https://api.buildkite.com/v2/organizations/orgName/pipelines/pipelineName/builds/1230', headers={ 'Authorization': 'Bearer <your_token>' }) >>> print response.json()
fuente
Bearer <my_token>
mientras que la primera no porque la respuesta es como si la solicitud no estuviera autenticada.¿Has probado el
uncurl
paquete ( https://github.com/spulec/uncurl )? Se puede instalar a través de la pipa,pip install uncurl
. Su solicitud de curl regresa:>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id" requests.get("https://website.com/id", headers={ "Authorization": "access_token myToken" }, cookies={}, )
fuente
Agregaré una pequeña pista: parece que lo que pasa como el valor clave de un encabezado depende de su tipo de autorización, en mi caso eso fue
PRIVATE-TOKEN
header = {'PRIVATE-TOKEN': 'my_token'} response = requests.get(myUrl, headers=header)
fuente