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.

Fallo de certificación SSL al llamar a la API de Google Drive utilizando python.

Quiero subir un archivo docx a Google Drive y ya he configurado el ID del cliente para la API de Google Drive y descargué el archivo client_secrets.json generado y lo agregué en el mismo directorio donde se encuentra mi código. Mi código en Python es el siguiente:

import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()

# Intentar cargar las credenciales guardadas
gauth.LoadCredentialsFile("mycreds.txt")
if gauth.credentials is None:
    # Autenticar si no están presentes
    gauth.LocalWebserverAuth()
elif gauth.access_token_expired:
    # Actualizarlas si han expirado
    gauth.Refresh()
else:
    # Inicializar las credenciales guardadas
    gauth.Authorize()

# Guardar las credenciales actuales en un archivo
gauth.SaveCredentialsFile("mycreds.txt")

drive = GoogleDrive(gauth)
test = 'demo.docx'
with open(test, "r", encoding="Latin-1") as file:
    fn = os.path.basename(file.name)
file_drive = drive.CreateFile({'demo.docx': os.path.basename(file.name)})

file_drive.SetContentString(file.read())
file_drive.Upload()
print('¡Subida de archivo exitosa!')

Para la autenticación, cuando el código ejecuta gauth.LocalWebserverAuth(), se abrirá la página de autenticación de Google en el navegador web. Una vez hecho esto, aparecerá el mensaje “El flujo de autenticación se ha completado” y regresará al código, pero arrojará un error:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)
python-BaseException
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que hay un problema con la verificación del certificado SSL. Una posible solución es desactivar la verificación SSL agregando la siguiente línea de código antes del código de autenticación:

    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context
    

    Esto creará un contexto SSL no verificado, lo que debería permitir que la autenticación continúe sin errores. Sin embargo, cabe señalar que desactivar la verificación SSL puede comprometer potencialmente la seguridad, por lo que se debe utilizar esta solución alternativa con precaución.

    Otra solución más segura es abordar la causa raíz del error: el certificado SSL autofirmado en la cadena de certificados. El problema podría resolverse agregando el certificado autofirmado al almacén de confianza o reemplazándolo con un certificado SSL confiable. Los pasos específicos para hacer esto dependerán del proveedor de certificados y del sistema operativo utilizado.

Comments are closed.