solicitud de python con autenticación (token de acceso)


Estoy tratando de obtener una consulta API en python. La línea de comandos

curl --header "Authorization:access_token myToken" https://website.com/id

Da alguna salida json. MyToken es una variable hexadecimal que permanece constante en todo momento. Me gustaría hacer esta llamada desde Python para que pueda recorrer diferentes ID y analizar la salida. Alguna idea? Antes de que la autenticación fuera necesaria, lo he hecho con urllib2. También he echado un vistazo al módulo de solicitudes, pero no pude averiguar cómo hacerlo.

Muchas gracias.

Author: user1895406, 2012-12-11

2 answers

El paquete requests tiene una API muy buena para las solicitudes HTTP, agregando 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 usar 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'})
 61
Author: wosc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-11 01:04:59

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)
 8
Author: bloodrootfc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-04 16:28:35