# Google Workspace: conectar buzones

Para que el asistente pueda leer el correo en Google Workspace y crear
borradores en él, necesita acceso a través de la Gmail API. Hay dos caminos y
ambos se basan en lo que la organización crea en **su propio Google Cloud**.
draften no tiene una aplicación común a la que usted solo dé su
consentimiento. Esto vale tanto para nuestro servicio como para una
instalación en su propio servidor.

Contamos con **Google Workspace**. Las cuentas personales `@gmail.com` no son
compatibles: con ellas no se puede iniciar sesión en draften y conectarlas
requeriría que Google verificara la aplicación.

## Qué camino elegir

| | Para toda la organización | Con la cuenta del buzón |
|---|---|---|
| En draften | registro (cuenta de servicio) en Organización › **Integraciones** | el botón **Conectar Gmail** del buzón |
| En Google | una cuenta de servicio con clave y domain-wide delegation | un cliente OAuth y una pantalla de consentimiento de tipo Internal |
| Quién lo crea | el administrador de Google Cloud y un superadministrador de Google Admin | el administrador de Google Cloud |
| Quién tiene que iniciar sesión | nadie | el propietario de cada buzón, una vez |
| A qué buzones llega | a todos los buzones del dominio | solo al buzón cuya cuenta inició sesión |
| Iniciar sesión en draften con una cuenta de Google | no, es un asunto aparte | el mismo cliente OAuth sirve también para iniciar sesión |

Para una organización con varios buzones es más sencillo el **camino para
toda la organización**. **Con la cuenta del buzón** conviene cuando no quiere
dar a una sola clave acceso a todos los buzones del dominio, o cuando de todos
modos va a introducir el inicio de sesión con cuenta de Google.

Puede tener ambos caminos a la vez; cada buzón usa uno de ellos. draften solo
pide el ámbito `gmail.modify`: leer y crear borradores; no envía nada.

## Camino A: para toda la organización

### En Google Cloud

Trabaja en https://console.cloud.google.com, en la organización de su dominio
de Workspace.

1. Elija un proyecto o cree uno nuevo (por ejemplo, `draften`).
2. **APIs & Services** → **Library** → **Gmail API** → **Enable**.
3. **IAM & Admin** → **Service accounts** → **Create service account**. Un
   nombre, por ejemplo `draften-correo`. No necesita ningún rol en el
   proyecto: el acceso al correo se lo da la delegación en Google Admin. Haga
   clic en **Done**.
4. Abra la cuenta de servicio y anote su **Unique ID**, el Client ID numérico.
5. Pestaña **Keys** → **Add key** → **Create new key** → **JSON** →
   **Create**. Se descarga un archivo con la clave.

!> Si Google rechaza crear la clave, su organización tiene activada la
política `iam.disableServiceAccountKeyCreation` (las organizaciones nuevas la
tienen activada de forma predeterminada). Para este proyecto la desactiva el
administrador de la organización en **IAM & Admin** → **Organization
policies**.

### En Google Admin

Necesita un superadministrador. En https://admin.google.com abra
**Security** → **Access and data control** → **API controls** → **Manage
Domain Wide Delegation** → **Add new**. **Client ID**: el ID numérico del
paso 4. **OAuth scopes**: `https://www.googleapis.com/auth/gmail.modify`. Haga
clic en **Authorize**. La delegación suele aplicarse en pocos minutos y, en
casos excepcionales, tarda varias horas.

### En draften

1. Abra Organización › **Integraciones**, la tarjeta **Acceso al correo para
   toda la organización**. Los registros los administran el propietario o los
   administradores de la organización.
2. **Sistema**: **Google Workspace**. Rellene **Nombre**, elija el archivo
   descargado en **Clave de la cuenta de servicio (JSON)** y haga clic en
   **Añadir registro**. La clave se guarda cifrada; en la tarjeta solo se ven
   después el correo electrónico de la cuenta de servicio y su Client ID.
3. En la página de cada buzón, en la tarjeta **Acceso al correo**, elija este
   registro en **Usar**, haga clic en **Aplicar** y después en **Probar la
   conexión**. El procedimiento con capturas lo muestra la guía [«Añadir y
   conectar un buzón»](/es/admin/adding-a-mailbox).

**Después, elimine el archivo descargado con la clave.** Quien lo tenga entra
en cualquier buzón del dominio. Una clave nueva de la misma cuenta de servicio
se sube en el registro con la opción **nueva clave (JSON)**; la clave de otra
cuenta de servicio añádala como un registro nuevo. Elimine la clave antigua en
Google Cloud.

Con el **buzón automático** activado ([Cómo inician sesión los
miembros](/es/admin/member-sign-in)), un buzón nuevo se vincula solo al
registro cuando hay exactamente uno activo para Google Workspace.

## Camino B: con la cuenta del buzón (Conectar Gmail)

Aquí el propietario del buzón inicia sesión con su cuenta de Google y permite
el acceso solo a su propio correo. El mismo cliente OAuth sirve también para
**iniciar sesión en draften con una cuenta de Google**.

### En Google Cloud

1. Primero abra en draften Organización › **Cómo inician sesión los
   miembros**, la tarjeta **Inicio de sesión con cuenta y conexión de
   buzones**. Muestra dos **redirect URI** exactos para la dirección de su
   draften: terminan en `/auth/google/callback`
   y `/mailboxes/connect/google/callback`. Cópielos de allí; deben coincidir
   carácter por carácter.
2. En el proyecto con la **Gmail API** habilitada (paso 2 del camino A), abra
   **APIs & Services** → **OAuth consent screen**. **User type**:
   **Internal**: así solo puede iniciar sesión una cuenta de su dominio y
   Google no tiene que verificar la aplicación. Rellene el nombre de la
   aplicación (por ejemplo, `draften`) y un correo electrónico de contacto.
3. En la parte de los ámbitos (**Scopes** / **Data access**), añada `openid`,
   `email`, `profile` y `https://www.googleapis.com/auth/gmail.modify`.
4. **APIs & Services** → **Credentials** → **Create credentials** → **OAuth
   client ID**. **Application type**: **Web application**. En **Authorized
   redirect URIs** pegue las dos direcciones de la tarjeta y haga clic en
   **Create**.
5. Copie el **Client ID** y el **Client secret**.

### En draften

1. El **propietario de la organización**, en la tarjeta **Inicio de sesión con
   cuenta y conexión de buzones**, rellena en **Cliente OAuth de Google** los
   valores **Client ID** y **Client secret** y hace clic en **Guardar**.
2. El **propietario del buzón** abre la página del buzón y, en la tarjeta
   **Acceso al correo**, hace clic en **Conectar Gmail**. Inicia sesión **con
   la cuenta de ese buzón** (draften rechaza cualquier otra cuenta) y permite
   el acceso. El botón solo lo ve el propietario del buzón, y solo si la
   organización tiene el cliente OAuth.
3. Después, **Probar la conexión**.

El **inicio de sesión con cuenta de Google** se activa en la misma página: en
**Dominios de correo de la organización** escriba su dominio de Workspace, el
principal, no un alias (Google no lo envía al iniciar sesión). En cuanto la
organización tiene el cliente OAuth y el dominio, los miembros inician sesión
con su cuenta de Google y sus contraseñas dejan de funcionar: consulte
[Cómo inician sesión los miembros](/es/admin/member-sign-in).

### Cuando un buzón se desconecta

- **La cuenta se eliminó o se bloqueó, o se revocó el acceso**: Google deja de
  emitir tokens y draften desconecta el buzón. Vuelva a conectarlo (**Volver a
  conectar Gmail**) o use el camino A.
- **«El proveedor no emitió ningún token de actualización»**: el propietario
  del buzón quita la aplicación en la configuración de su cuenta de Google
  (**Seguridad** → **Aplicaciones de terceros**) y vuelve a conectar el buzón.
- **«Inició sesión una cuenta distinta de la dirección del buzón»**: al
  conectar, elija la cuenta de ese mismo buzón.

## Errores de la prueba de la conexión

La prueba comprueba tres pasos: **Acceso**, **Token y permiso** y **Lectura de
la Bandeja de entrada**.

| En el mensaje | Qué significa | Qué hacer |
|---|---|---|
| la delegación para el ámbito no está autorizada (`unauthorized_client`) | en Google Admin falta la domain-wide delegation, o tiene otro Client ID u otro ámbito | revisar la delegación en Google Admin: el ID numérico y el ámbito exacto `gmail.modify` |
| `invalid_grant` con la cuenta de servicio | ese buzón no existe en el dominio de Workspace | comprobar la dirección del buzón |
| «Gmail API has not been used…» | la Gmail API no está habilitada en el proyecto | habilitar la Gmail API (paso 2) |
| token sin `gmail.modify` | la delegación o la pantalla de consentimiento no tiene el ámbito `gmail.modify` | añadir el ámbito |
| `invalid_grant`, `deleted_client` con una cuenta conectada | la conexión se revocó o se eliminó el cliente OAuth | **Volver a conectar Gmail** |

Otros errores se describen en [Solución de problemas](/es/admin/troubleshooting).
