Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

139
Vistas
El código API de Google Calendar no se autentica en Cloud Run

Escribí una llamada a la API de Calendario simple usando el cliente oficial de NodeJS: https://github.com/googleapis/google-api-nodejs-client#service-account-credentials

Funciona bien en mi máquina local, usando una Cuenta de servicio configurada con Delegación en todo el dominio para crear el evento e invitar a una lista de asistentes en mi nombre.

Configuré la ubicación de las credenciales usando GOOGLE_APPLICATION_CREDENTIALS env var en mi máquina local, pero no configuré esto en el servicio Google Cloud Run porque supuestamente es automático ya que asocié la cuenta de servicio. Esta suposición parece cierta porque puedo llamar a las funciones de GoogleAuth y recuperar el nombre de cuenta de servicio esperado.

Sin embargo, una vez que intento ejecutarlo en Cloud Run, arroja el error:

Error: las cuentas de servicio no pueden invitar asistentes sin la delegación de autoridad en todo el dominio.

Al principio pensé que se trataba de un problema con las credenciales predeterminadas que de alguna manera cargaban la cuenta de servicio incorrecta.

Agregué el registro directamente antes de que se llame al evento para ver qué cuenta está usando:

 const auth = new googleClient.auth.GoogleAuth({ clientOptions: { subject: eventOwner }, scopes: calendarScopes, }) const serviceAcctName = (await auth.getCredentials())?.client_email googleClient.options({ auth: auth }) logger.info(`${serviceAcctName} acting as ${eventOwner}, using calendar ${calendarId}`) const calendar = googleClient.calendar('v3') const response = await calendar.events.insert(event)

El resultado del registro es exactamente como se esperaba, con la cuenta de servicio correcta actuando como el usuario correcto en la identificación de calendario correcta.

Verifiqué dos veces que la cuenta tiene delegación de autoridad en todo el dominio y los alcances adecuados, y funciona bien en mi máquina local, por lo que lo único que se me ocurre es algo sobre la función de la biblioteca de obtener credenciales predeterminadas en un El entorno de Google está sobrescribiendo mi llamada googleClient.options(). Pero todavía estoy confundido porque las funciones de GoogleAuth aún brindan la información de la cuenta de servicio esperada cuando toma el 'predeterminado'.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda