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
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:
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.