El 30 de septiembre se terminó el acceso al SMTP de Gmail mediante contraseña de aplicación o usuario y contraseña. Voy a crear dos posts para poder enviar un email con Gmail y PHP, pero primero vamos a crear una cuenta de servicio en Google.
OJO: Este ejemplo está enfocado a una cuenta en Google Workspace ([email protected]), no una cuenta personal ([email protected]).
Para hacerlo con una cuenta normal deberás usar la pantalla de consentimiento que ofrece la configuración de Google, pero no lo tratamos acá.
Activar la API de Gmail
Antes que nada, debemos activar la API de Gmail en nuestro Google Cloud.
Buscamos “Gmail API” en la lista de librerías disponibles y la activamos.
Crear cuenta de servicio
Las cuentas de servicio están formadas por un correo electrónico único, un archivo JSON y su enlace con la delegación de dominio para darle permisos a los “scopes” de la API. Vamos por partes.
Primero toca el turno de configurar la cuenta de servicio en nuestra empresa en Google Cloud.
Después de darle a “CREATE SERVICE ACCOUNT” nos aparece un asistente con tres pasos. Solo el primero es obligatorio y nos indica la dirección de correo única de nuestra cuenta.
Una vez que creamos la cuenta, ya podemos ver la cuenta en nuestra lista en “Service accounts”.
Sin embargo no hemos creado nuestras llaves que servirán para comunicarnos server-to-server.
Ahora damos click en nuestra cuenta mi-cuenta-de-servicio@… Y en el tab “KEYS” veremos el botón de ADD KEY.
Nos aparecerá un modal, seleccionamos “JSON” como “Key type” y luego crear nuestra llave.
Después de crear la llave nos descargaremos un archivo JSON que debemos proteger con nuestra vida 😉
Ahora en nuestra lista de “KEYS” de nuestra Account service ya vemos creada la llave.
Si regresamos a nuestra lista de “Account services”, veremos que cada una tiene una columna llamada “OAuth 2 Client ID”. Esta será el identificador que usaremos luego para darle acceso al nuestras llamadas a la API de Gmail. Así que lo guardamos.
Pueden existir restricciones. Cambiar permisos
Dar acceso a la cuenta de servicio
Una vez que hemos creado nuestra cuenta de servicio, debemos acceder al administrador de Google Workspace. Esto solo lo podemos hacer con un administrador, no como usuario normal de Workspace.
La delegación de autoridad nos permite dar acceso a datos a otros usuarios de la organización (en nuestro caso, la cuenta de servicio que creamos en Google Cloud) para servicios como Gmail.
Una vez que damos “MANAGE DOMAIN WIDE DELEGATION” nos aparece una lista de los accesos que hemos concedido a usuarios. Damos “Add new”.
El modal nos pide el “Client ID”, aquí es donde vamos a poner el “OAuth 2 Client ID” que guardamos al crear la llave a la cuenta de servicio.
También nos pedira una lista separada por comas de los scopes a los que la cuenta podrá acceder con la API. Puedes encontrar la Lista de scopes de Gmail aquí.
Una vez que terminamos y damos en “AUTHORIZE” ya veremos nuestra cuenta de servicio agregada en la lista.
Este es el primer paso para poder comunicarnos con Google server-to-server sin una pantalla de consentimiento.
¡Gracias por leer!