Acceso web a Hojas de Google
El acceso a Hojas de Google depende de la credencial que aportes. En el sitio web desplegado hay dos formas de entrar, una junto a la otra: iniciar sesión con Google (OAuth), o elegir un archivo de clave de cuenta de servicio que tu propio navegador usa directamente. La ruta de Unity / local conserva su clave de cuenta de servicio local a la máquina, sin cambios.
En el sitio desplegado — OAuth, lectura y escritura
En el sitio desplegado, un usuario que inició sesión puede tanto leer como escribir Hojas de Google mediante su propio token de OAuth.
- Privilegio mínimo. Iniciar sesión solicita tu perfil básico y acceso a hojas de cálculo por archivo (
drive.file): la app solo puede leer y escribir los archivos de hoja de cálculo que le hayas abierto explícitamente. Nada a nivel de cuenta — no puede listar ni explorar el resto de tu Drive, y un archivo que no le hayas abierto permanece invisible para ella. - El mismo plan del núcleo. Una escritura en la web se ejecuta a través del mismo plan del núcleo exacto y la misma verificación de bloqueo optimista compartida que cualquier otra ruta — la hoja en vivo se vuelve a comprobar justo antes de enviar, así que una celda que un tercero cambió después de tu importación se omite, nunca se sobrescribe. Solo difiere la capa de transporte: en esta ruta lleva el token portador de OAuth.
- El ACL de la hoja es la autoridad final. SheetForge no decide quién puede escribir; lo decide Google. Un
403de Google se remapea a un mensaje de permiso honesto en lugar de una escritura parcial, así que un rechazo se lee como un rechazo.
El token de OAuth se guarda en la cookie de sesión (un JWT) y lo usan las acciones del servidor. La única excepción es el selector de archivos de Google, descrito a continuación: es un widget de Google que se ejecuta en la página, así que abrirlo le entrega a la página un token de acceso de corta duración para tu propia sesión.
Empieza desde el selector — nunca necesitas un ID
La pestaña con sesión iniciada empieza con Elegir una hoja de cálculo de Google: el propio selector de archivos de Google se abre sobre la página, eliges la hoja de cálculo, su ID aterriza en el panel y la importación se ejecuta por sí sola. Elegir el archivo es también lo que le concede a la app acceso a ese archivo bajo drive.file, así que un solo gesto hace las dos cosas. Una línea Hoja de cálculo actual muestra a qué apunta el panel.
Escribir un ID a mano sigue funcionando — se movió bajo un pliegue Avanzado: empezar desde un id de hoja de cálculo, y un ID guardado previamente sigue funcionando exactamente como antes. El detalle honesto se indica ahí mismo: Google solo abre archivos que hayas elegido al menos una vez, así que un ID de un archivo nunca elegido se rechaza hasta que lo elijas (la línea Permitir acceso al archivo… de más abajo cubre eso).
Abrir un archivo para la app — una sola vez
Bajo drive.file, el permiso crece archivo por archivo. Si la app se topa con una hoja de cálculo a la que todavía no tiene acceso — un ID escrito bajo Avanzado, un ID guardado tras cambiar de cuenta — abre el selector de archivos propio de Google con esa hoja de cálculo ya localizada, en el momento en que se topa con el error de permiso. Elige el archivo una vez, y la importación o el push que iniciaste se completa por sí solo. A partir de entonces, esa hoja de cálculo se comporta exactamente como siempre.
- Nada que preparar de antemano. No concedes el acceso por adelantado; el selector aparece justo cuando hace falta, preconfigurado con el archivo en cuestión, y la acción que pediste se reintenta automáticamente después de elegir.
- Volver a conceder acceso siempre está a mano. El panel de Google mantiene una línea Permitir acceso al archivo… que abre el mismo selector en cualquier momento — por ejemplo, tras cambiar a otra cuenta de Google.
- Un límite honesto. El selector es un widget de Google que se ejecuta en la página, así que mientras está en uso, la página guarda un token de acceso de corta duración (válido como máximo una hora) para tu sesión, obtenido de un endpoint del mismo origen que exige tu inicio de sesión. Es el mismo tipo de confianza que la ruta de archivo de clave, más abajo, deposita en la página — lo que la protege es la estricta Content Security Policy de la app. El token no se almacena ni se registra.
La pestaña de archivo de clave conserva su campo de ID a propósito: una cuenta de servicio no tiene una sesión de navegación con inicio de sesión con la que elegir, así que un ID — con la hoja compartida a la cuenta — sigue siendo la forma honesta de entrar ahí.
En el sitio desplegado — un archivo de clave de cuenta de servicio, firmado por tu navegador
La segunda pestaña del panel de Google admite un archivo de clave JSON de cuenta de servicio. Todo lo que hace esa clave ocurre en tu navegador:
- La clave nunca llega al servidor. El propio navegador firma la solicitud de token y llama directamente a las API de Google, así que la clave, la solicitud firmada, el token de acceso y los datos de tu hoja nunca tocan los servidores de SheetForge. Las rutas de cuenta de servicio del lado del servidor permanecen bloqueadas (
501) en el sitio desplegado, exactamente como antes — esta ruta añade una capacidad sin abrir ninguna. - Recordar la clave es honesto sobre lo que guarda. Si eliges que se recuerde la clave, el texto del archivo se descarta de inmediato; lo que se conserva — en ese dispositivo, en el almacenamiento del navegador — es una clave de firma que los scripts de la página pueden usar pero nunca pueden volver a leer. Cualquiera que pueda abrir ese perfil del navegador podría igualmente recuperarla, así que trata el dispositivo como tratarías el propio archivo de la clave. Olvidar clave la elimina de inmediato, en todas las pestañas abiertas, y la app también le pide a Google que revoque el token de acceso actual.
- Mismo plan, misma verificación. Las lecturas y escrituras se ejecutan a través del mismo plan del núcleo y la misma verificación previa al envío que las demás rutas.
La ruta de Unity / local
La clave de cuenta de servicio que usan Unity y el servidor de desarrollo local se lee desde una ruta local de la máquina y nunca se sube ni se empaqueta — es la misma clave descrita en Configuración de Hojas de Google; mantenla fuera de Assets/ y fuera del repositorio. El repositorio no contiene credenciales.
Los menús desplegables se actualizan con cada push
Después de un push desde la app web, los menús desplegables de validación de datos de la hoja se reescriben automáticamente — todas las pestañas en un solo lote, con el menú desplegable de una columna de referencia escrito como un rango sobre la columna clave de la hoja de destino, así que crece a medida que se añaden registros. Una regla dirigida a una pestaña de hoja que no existe se omite y se reporta. Esto coincide con lo que escribe el push de Google del editor.
Qué hace cada ruta
| Dónde se ejecuta | Credencial de Google | Lee | Escribe |
|---|---|---|---|
| Unity / local | Clave de cuenta de servicio, leída desde una ruta local de la máquina | Sí | Sí — escrituras de celda quirúrgicas, reescritura de estructura, Push |
| Sitio desplegado | El token de OAuth del usuario que inició sesión (drive.file — los archivos abiertos para la app) | Sí | Sí — mismo plan del núcleo + verificación de bloqueo optimista |
| Sitio desplegado | Un archivo de clave de cuenta de servicio que eliges, usado directamente por tu navegador | Sí | Sí — mismo plan del núcleo y verificación; las solicitudes van directamente de tu navegador a Google |
| Sitio desplegado | Rutas de cuenta de servicio del lado del servidor | — | Bloqueadas (501) |
El comportamiento de escritura es idéntico dondequiera que se ejecute, porque todas las rutas comparten el plan del núcleo y la verificación previa al envío. Solo cambia el transporte — un token de cuenta de servicio firmado por el navegador, un portador de OAuth por usuario, o la clave del servidor local.
Páginas relacionadas
- Configuración de Hojas de Google — crear la cuenta de servicio y la clave JSON para la ruta de Unity
- Fuentes, exportación y envío — la cadena de seguridad de Push que comparte la ruta de escritura web
- SheetForge Web — la app del navegador donde vive este acceso