es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo pasar un token de acceso (OAuth) en una llamada a la API?

Estoy teniendo problemas con una llamada a la API utilizando OAuth 2.0 y Python.

El flujo, según lo entiendo, debería ser el siguiente:

  1. Solicitar un token utilizando un id de cliente (Clave de API) y un secreto de cliente.
  2. Si tiene éxito, recibir un token de acceso y un token de actualización.
  3. Realizar la llamada deseada a la API utilizando el access_token.

Mi problema es que el paso 3 no funciona.

# solicitud de token de acceso
URL = 'https://www.geni.com/platform/oauth/request_token?client_id=...&client_secret=......&grant_type=client_credentials'
response = requests.post(URL)
listaRespuesta = json.loads(response.text)
print("Token de acceso adquirido:", listaRespuesta['access_token'])

Esto está bien. Con la orientación de James, el token se utiliza en los encabezados y no como parámetro de consulta.

# de esta manera no funcionará
URL = "https://www.geni.com/api/profile-122248213/immediate-family?access_token=" + listaRespuesta['access_token']

Entonces…

URL = "https://www.geni.com/api/profile-122248213/immediate-family"

losEncabezados = {'Content-Type': 'application/json',
            'Authorization': 'Bearer {}'.format(elTokenDeAcceso)}
print('Encabezados:', losEncabezados)

>>> Encabezados: {'Content-Type': 'application/json', 'Authorization': 'Bearer: aaaaa3LRm6frS4FwZvB3ZMZwdKVNMCEBpBvlFwbT'}

Esto produce esto:

{'error': {'type': 'OAuthException', 'message': 'Token de acceso inválido'}}

Sin embargo, cuando valido el token utilizando un punto final de API diferente con ese propósito, obtengo:

{"result":"OK"}

Entonces, lo mejor que puedo determinar es que el problema está en el formato de los encabezados. ¿Qué estoy haciendo mal?

losEncabezados = {'Content-Type': 'application/json',
            'Authorization': 'Bearer {}'.format(elTokenDeAcceso)}
Tags:  

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en el formato del encabezado de Autorización.

    Prueba usando esto en su lugar:

    theHeaders={'Content-Type': 'application/json',
                'Authorization': 'Bearer ' + theAccessToken}
    

    Esto debería formatear correctamente el encabezado de Autorización con el token de acceso. Avísame si esto soluciona el problema.

Comments are closed.