Plugins Preguntas frecuentes Guías Blog Soporte Contacto Ver los plugins

API de Google Drive: cuenta de servicio vs OAuth, explicado sin tecnicismos

Google Drive PortalActualizado el 30 de septiembre de 20268 min de lectura

Google Drive Portal

En la API de Google Drive, OAuth permite que una web actúe en nombre de una persona: alguien inicia sesión con Google, aprueba el acceso y la web toma prestado el permiso de esa persona. Una cuenta de servicio es una identidad de Google aparte, que pertenece a la web y solo ve las carpetas que compartes con ella. Las conexiones OAuth hechas con tu propia app de Google pueden caducar a los 7 días o necesitar la verificación de Google; una cuenta de servicio evita las dos cosas, pero te deja un archivo de clave que debes guardar bien.

Dos formas de que una web entre en Google Drive

Un plugin de WordPress que muestra archivos de Drive tiene que demostrar a Google que puede leerlos. Google ofrece dos formas principales de hacerlo, y la diferencia se entiende mejor con un ejemplo cotidiano.

OAuth: prestar tu propio acceso

Piensa en el huésped de un hotel que firma una autorización para que el conserje recoja paquetes en su nombre. Con OAuth, haces clic en Iniciar sesión con Google, Google muestra una pantalla que dice qué app lo pide y qué quiere ver, y haces clic en Permitir. Google da entonces a la web un pase de larga duración (llamado token de actualización) para que pueda volver sin preguntarte otra vez. La web ve lo que ve tu cuenta, dentro de los límites de lo que ha pedido.

Cuenta de servicio: un compañero nuevo con su propia tarjeta

Ahora piensa en contratar a un asistente con su propia tarjeta de empleado. Empieza sin acceso a nada. Compartes una carpeta con él, igual que la compartes con un compañero, y eso es todo lo que puede abrir. Una cuenta de servicio funciona así: es una identidad de Google para software, con su propia dirección de correo (que termina en iam.gserviceaccount.com). La guía de Google dice que puedes tratar la dirección de correo electrónico de la cuenta de servicio como una cuenta de usuario en la configuración de uso compartido. Nadie inicia sesión y no hay pantalla de aprobación.

Por qué caducan las conexiones de Google Drive en las webs

Si alguna vez un plugin de Drive te ha pedido "volver a conectar" cada semana, o ha mostrado un error como invalid_grant, la causa suele ser el pase de OAuth, no el plugin.

Muchos plugins te piden crear tu propia app de Google: un proyecto en Google Cloud con pantalla de consentimiento, ID de cliente, dirección de redirección y una lista de usuarios de prueba. Una app nueva empieza con el estado de publicación Testing (Prueba, si usas la consola en español). La documentación de Google es clara: en ese estado se emite un token de actualización que vence en 7 días, salvo que la app pida solo información básica del perfil. Leer Drive no es información básica del perfil, así que el pase deja de funcionar una semana después de conectar.

Sacar la app de ese estado (el botón Publish app de la página Audience de la consola de Google) elimina el límite de 7 días, pero trae el siguiente tema: la verificación. Además, incluso el pase de una app publicada puede dejar de funcionar por otros motivos que Google enumera:

  • la persona revoca el acceso de la app en su cuenta de Google;
  • el pase no se ha usado durante seis meses;
  • la cuenta ha alcanzado el límite de pases activos que fija Google;
  • un administrador de Google Workspace restringe la app para la organización.

También hay un factor humano. Una conexión OAuth está ligada a la cuenta de una persona. Si el compañero que hizo clic en Permitir se va de la empresa y se cierra su cuenta, la web pierde el acceso con él.

Por qué Google pide una verificación

Cuando una app pide acceso, indica uno o varios permisos (scopes): el alcance del acceso que quiere. Google clasifica los permisos en no sensibles, sensibles y restringidos. En Drive, los permisos que leen todo el Drive de una persona, incluido el de solo lectura, están clasificados como restringidos.

Una app publicada que usa permisos restringidos y está abierta al público tiene que superar la verificación de permisos restringidos de Google. Si los datos pasan por un servidor, como ocurre con una web, Google exige además una evaluación de seguridad realizada por un evaluador independiente, que se repite al menos cada 12 meses. Google advierte de que el proceso puede durar varias semanas.

Mientras la app no esté verificada, quien inicia sesión ve un aviso de que Google no la ha verificado, y la app queda limitada a 100 usuarios. Google sí permite una app sin verificar para uso personal de menos de 100 personas, así que el propietario de una web puede saltarse el aviso con su propia app. Funciona, pero no es algo que se pueda entregar a un cliente.

Por eso los plugins de Drive suelen seguir uno de estos tres caminos:

  1. La app verificada del fabricante del plugin. Haces clic en Iniciar sesión con Google y apruebas la app del fabricante. No tienes que tocar Google Cloud, pero das a esa app acceso a tu Drive a través de tu propia cuenta.
  2. Tu propia app OAuth. Creas tú la app en Google Cloud. En modo de prueba caduca cada semana; publicada, muestra el aviso de app sin verificar.
  3. Una cuenta de servicio. Sin inicio de sesión ni pantalla de consentimiento, así que nada de lo anterior se aplica.

Existe también un permiso reducido, conocido como "drive.file", que Google clasifica como no sensible. Solo cubre los archivos concretos que una persona abre o crea con esa app, así que sirve para herramientas que guardan o eligen archivos sueltos, no para una página que debe mostrar todo lo que añades a una carpeta.

Qué cambia con una cuenta de servicio

Con una cuenta de servicio, la web tiene su propia identidad y tú decides qué ve compartiendo. Eso cambia varias cosas a la vez.

  • Sin caducidad semanal. La conexión usa un archivo de clave, no un inicio de sesión. Google indica que, de forma predeterminada, las claves de las cuentas de servicio nunca vencen. La clave deja de funcionar si la borras en Google Cloud o si tu organización ha fijado una duración máxima para las claves.
  • Sin pantalla de consentimiento, sin usuarios de prueba, sin app que publicar. Nadie aprueba nada, así que Google no tiene nada sobre lo que mostrar un aviso.
  • Un acceso que puedes ver. La cuenta de servicio ve solo las carpetas compartidas con ella. Abre la ventana Compartir de la carpeta en Drive y verás su dirección en la lista, como la de cualquier persona. Quítala y el acceso termina al momento.
  • No depende de una persona. El personal puede entrar y salir; la web conserva su propia identidad.

No está libre de contrapartidas. El archivo de clave es una contraseña: quien lo tenga puede leer lo que lee la cuenta de servicio, así que nunca debe enviarse por correo ni dejarse en una carpeta pública. Configurarla supone unos diez minutos en la consola de Google Cloud. Y en Google Workspace hay dos ajustes de la organización que pueden estorbar: las organizaciones de Google Cloud creadas a partir del 3 de mayo de 2024 bloquean por defecto la creación de claves, y algunas organizaciones prohíben compartir con direcciones de fuera del dominio. En ambos casos un administrador puede hacer una excepción.

Ventana Choose a Drive folder en la administración de WordPress con la lista de carpetas compartidas con la cuenta de servicio, entre ellas tres unidades compartidas
Una cuenta de servicio ve solo lo que se ha compartido con ella, incluidas las unidades compartidas de las que es miembro.

Las unidades compartidas también funcionan. Puedes añadir la dirección de la cuenta de servicio como miembro de la unidad compartida, o compartir con ella una sola carpeta de su interior.

Cuenta de servicio vs OAuth en Google Drive: comparativa

App verificada del fabricanteTu propia app OAuthCuenta de servicio
Quién inicia sesiónTú, con tu cuenta de GoogleTú, con tu cuenta de GoogleNadie
Puede dejar de funcionar solaAcceso revocado, 6 meses sin uso, política del administradorA los 7 días en modo de prueba, más los mismos motivosNo, solo si se borra la clave o se deja de compartir la carpeta
Pantalla de aviso de GoogleNoSí, hasta que Google la verifiqueNo hay ninguna pantalla
Qué puede verLo que la app pidió en tu DriveLo que la app pidió en tu DriveSolo las carpetas compartidas con ella
Tu trabajo de configuraciónUn clicPantalla de consentimiento, ID de cliente, dirección de redirección, usuarios de pruebaUn proyecto, un archivo de clave, compartir una carpeta
Ideal paraConexiones rápidas si confías en el proveedorDesarrolladores que prueban sus propias herramientasWebs que muestran tus archivos a tus usuarios

Cuál debe usar tu web

OAuth es la herramienta adecuada cuando cada visitante debe llegar a su propio Drive: por ejemplo, un formulario en el que la gente elige un archivo de su cuenta de Google. Solo esa persona puede dar el permiso, así que una cuenta de servicio no puede sustituirlo.

Una cuenta de servicio encaja mejor cuando la web muestra tus archivos a tus usuarios: un área de clientes, un área de distribuidores, una página de documentos para el personal. Aquí la web necesita una conexión estable con unas pocas carpetas, y quién ve qué lo deciden los accesos de tu web, no Google.

Es la elección que hicimos para Google Drive Portal. Se conecta solo con una cuenta de servicio, así que no hay dirección de redirección que copiar, ni pantalla de consentimiento, ni usuarios de prueba, ni app que publicar o verificar. La guía de conexión recorre el proyecto, la clave y la carpeta compartida, y la página de problemas de conexión explica cada mensaje con palabras sencillas. Para ver cómo encaja en una configuración real, lee cómo crear un área privada para clientes con Google Drive.

En resumen

OAuth toma prestado el acceso de una persona. Con tu propia app de Google caduca cada 7 días mientras está en modo de prueba, y una vez publicada muestra un aviso hasta que Google la verifica, un proceso que para el acceso completo a Drive incluye una evaluación de seguridad anual. La app verificada de un fabricante lo evita, pero la conexión sigue perteneciendo a la cuenta de una persona.

Una cuenta de servicio da a la web su propia identidad, que ve solo lo que compartes, no caduca por defecto y no necesita pantalla de verificación. A cambio, tienes un archivo de clave que proteger y una breve configuración en Google Cloud. Para una web que muestra tus carpetas de Drive a tus clientes o a tu personal, suele ser la opción más tranquila. Si solo necesitas mostrar una carpeta pública, puede que no te haga falta ninguna de las dos: consulta cómo insertar una carpeta de Google Drive en WordPress.

Preguntas frecuentes

¿Por qué mi plugin de Google Drive se desconecta cada 7 días?

Lo más probable es que el plugin use una app de Google que creaste y que sigue en el estado de publicación de prueba (Testing). Google hace que los pases de acceso de las apps en ese estado caduquen a los 7 días, así que tienes que volver a conectar cada semana.

¿La clave de una cuenta de servicio caduca?

No de forma predeterminada. Sigue funcionando hasta que la borras en Google Cloud, salvo que tu organización haya fijado una duración máxima para las claves.

¿Una cuenta de servicio necesita la verificación de apps de Google?

La verificación de apps de Google se aplica a la pantalla en la que las personas inician sesión y aprueban una app. Una cuenta de servicio no tiene inicio de sesión ni pantalla de aprobación: le das acceso compartiendo carpetas con su dirección.

¿Una cuenta de servicio puede ver todo mi Google Drive?

No. Empieza sin acceso a nada y solo ve los archivos, carpetas y unidades compartidas que compartes con su dirección de correo. Si dejas de compartir una carpeta, pierde el acceso.