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.

Hacer solicitudes a la API de Google con Python.

Estoy intentando hacer solicitudes a la API de Google para crear repositorios fuente utilizando una cuenta de servicio y su archivo de clave JSON.
Dado que no existen bibliotecas de cliente para este producto, estoy utilizando las consultas con Python utilizando esta documentación: https://cloud.google.com/source-repositories/docs/reference/rest.

Ya he utilizado un código similar para invocar mis funciones en la nube con éxito, pero esta vez me he bloqueado con estos errores 401 en las solicitudes. Configuré GOOGLE_APPLICATION_CREDENTIALS con el JSON de mi cuenta de servicio, le dí al servicio los permisos de Administrador de Repositorio Fuente, pero aún devuelve 401.

Aquí está mi código:

import urllib.request
import json
import urllib
import google.auth.transport.requests
import google.oauth2.id_token

body = { "name" : "projects/$nombre_de_mi_proyecto/repos/$nombre_del_repositorio"}
jsondata = json.dumps(body).encode("utf8")
req = urllib.request.Request('https://sourcerepo.googleapis.com/v1/projects/$nombre_de_mi_proyecto/repos')
req.add_header('Content-Type', 'application/json; charset=utf-8')

auth_req = google.auth.transport.requests.Request()
id_token = google.oauth2.id_token.fetch_id_token(auth_req, 'https://www.googleapis.com/auth/cloud-platform')
req.add_header("Authorization", f"Bearer {id_token}")
response = urllib.request.urlopen(req, jsondata)
print(response.read().decode())

También intenté usando una clave de API al final de la URL de esta forma:

req = urllib.request.Request('https://sourcerepo.googleapis.com/v1/projects/$nombre_de_mi_proyecto/repos?key=$mi_clave_de_api')

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que has configurado correctamente la autenticación con la cuenta de servicio y el archivo de clave JSON. Sin embargo, el error 401 indica que hay un problema de autorización para acceder a la API de Google.

    Una posible razón para este error podría ser que la cuenta de servicio no tenga el rol o los permisos adecuados para el método específico de la API que estás llamando. Asegúrate de que la cuenta de servicio tenga el rol de Administrador de Repositorio Fuente para el proyecto específico en el que estás intentando crear un repositorio.

    Otra posibilidad es que pueda haber un problema con la solicitud de la API en sí misma. Asegúrate de que la URL y los parámetros sean correctos y estén formateados correctamente. También confirma que estás llamando al método HTTP correcto (por ejemplo, POST para crear recursos) y utilizando el formato de datos correcto para el cuerpo de la solicitud.

    Finalmente, asegúrate de que la Clave de la API, si se utiliza, tenga los permisos necesarios para esta API. La Clave de la API debe estar asociada con un proyecto que tenga habilitada la API de Repositorio Fuente y cuya Clave de la API esté permitida para llamar al método específico.

    Espero que esto te ayude a resolver el problema y realizar solicitudes exitosas a la API de Google para crear repositorios fuente utilizando Python.

Comments are closed.