En esta guía, se explica cómo configurar y usar una cuenta de servicio para acceder a la API de REST de Google Chat en nombre de una app de Chat. Primero, se explica cómo crear una cuenta de servicio. Luego, se demuestra cómo escribir una secuencia de comandos que use la cuenta de servicio para autenticarse con la API de Chat y publicar un mensaje en un espacio de Chat.
Las apps de chat pueden usar cuentas de servicio para autenticarse cuando llaman de forma asíncrona a la API de REST de Google Chat a fin de realizar lo siguiente:
- Enviar mensajes a Google Chat con
spaces.messages.create
para lo siguiente:- Notificar a los usuarios cuando un trabajo en segundo plano de larga duración termina de ejecutarse.
- Alerta a los usuarios que un servidor se quedó sin conexión.
- Pídale a una persona de atención al cliente que dé lugar a un caso de cliente abierto recientemente.
- Actualiza los mensajes enviados previamente con
spaces.messages.update
a lo siguiente:- Cambia el estado de la operación en curso.
- Actualiza el destinatario de una tarea o la fecha límite.
- Enumera los usuarios en un espacio con
spaces.members.list
para lo siguiente:- Mira quién está en un espacio.
- Verifique que la membresía del espacio incluya a todos los miembros de un equipo.
Cuando se autentica con una cuenta de servicio, para obtener datos sobre un espacio de Chat o realizar acciones en él, las apps de Chat deben tener membresía en el espacio. Por ejemplo, para crear una lista de los miembros de un espacio o crear un mensaje en él, la app de Chat debe ser miembro del espacio.
Si tu app de chat necesita acceder a datos del usuario o realizar acciones en nombre de un usuario, autentícate como usuario en su lugar.
Si eres administrador de dominio, puedes otorgar delegación de autoridad de todo el dominio para autorizar que la cuenta de servicio de una aplicación acceda a los datos de tus usuarios sin requerir que cada uno otorgue su consentimiento. Después de configurar la delegación de todo el dominio, puedes realizar llamadas a la API con la cuenta de servicio para actuar en nombre de una cuenta de usuario. Aunque una cuenta de servicio se usa para la autenticación, la delegación de todo el dominio actúa en nombre de un usuario y, por lo tanto, se la considera autenticación de usuario. Cualquier funcionalidad que requiera autenticación del usuario, puedes usar la delegación de todo el dominio.
Para obtener más información sobre el momento en que las apps de Chat requieren autenticación y qué tipo de autenticación se debe usar, consulta Tipos de autenticación requerida en la descripción general de la autenticación y la autorización de la API de Chat.
Requisitos previos
Para ejecutar el ejemplo de esta guía, necesitas los siguientes requisitos previos:
Python
- Python 3.6 o superior
- La herramienta de administración de paquetes pip
Las bibliotecas cliente de Google para Python. Para instalarlos, ejecuta el siguiente comando en la interfaz de línea de comandos:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Una cuenta de Google Workspace con acceso a Google Chat
Un proyecto de Google Cloud con la API de Chat habilitada Para crear un proyecto y habilitar una API, consulta Cómo crear un proyecto y habilitar la API.
Una app de Chat publicada con membresía en un espacio de Chat:
- Para crear y publicar una app de chat, consulta Cómo compilar una app de Google Chat con Cloud Functions.
- Para agregar una app de chat a un espacio de Chat, consulta Cómo agregar apps a espacios o conversaciones en Google Chat.
Paso 1: Crea una cuenta de servicio en Google Cloud Console
Crea una cuenta de servicio que usará la app de Chat para acceder a las API de Google.
Crear una cuenta de servicio:
Para crear una cuenta de servicio, sigue estos pasos:
- En la consola de Google Cloud, ve al menú > IAM y administración > Cuentas de servicio.
- Haz clic en Crear cuenta de servicio.
- Completa los detalles de la cuenta de servicio y, luego, haz clic en Crear y continuar.
- Opcional: Asigna funciones a tu cuenta de servicio para otorgar acceso a los recursos de tu proyecto de Google Cloud. Para obtener más información, consulta Otorga, cambia y revoca el acceso a los recursos.
- Haz clic en Continuar.
- Opcional: Ingresa usuarios o grupos que puedan administrar y realizar acciones con esta cuenta de servicio. Para obtener más detalles, consulta Cómo administrar el robo de identidad de cuentas de servicio.
- Haz clic en Listo. Toma nota de la dirección de correo electrónico de la cuenta de servicio.
La cuenta de servicio aparecerá en la página de la cuenta de servicio. A continuación, crea una clave privada para la cuenta de servicio.
Crea una clave privada
A fin de crear una clave privada para la cuenta de servicio, sigue estos pasos:
- En la consola de Google Cloud, ve al menú > IAM y administración > Cuentas de servicio.
- Selecciona tu cuenta de servicio.
- Haz clic en Claves > Agregar clave > Crear clave nueva.
- Selecciona JSON y, luego, haz clic en Crear.
Ya se generó y descargó el nuevo par de claves pública y privada en tu máquina como un archivo nuevo. Este archivo es la única copia de esta clave. Para obtener información sobre cómo almacenar tu clave de forma segura, consulta Cómo administrar claves para cuentas de servicio.
- Haz clic en Cerrar.
Para obtener más información sobre las cuentas de servicio, consulta cuentas de servicio en la documentación de Google Cloud IAM.
Paso 2: Escribe una secuencia de comandos que use la cuenta de servicio para autenticarse con la API de REST de Chat
El siguiente código se autentica con la API de REST de Chat mediante una cuenta de servicio y, luego, publica un mensaje en un espacio de Chat:
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_app_auth.py
. Incluye el siguiente código en
chat_app_auth.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
En el código, reemplaza
SPACE_NAME
por un nombre de espacio, que puedes obtener del métodospaces.list
en la API de Chat o de la URL de un espacio.
Paso 3: Ejecuta el ejemplo completo
En tu directorio de trabajo, compila y ejecuta la muestra:
Python
python3 chat_app_auth.py
La secuencia de comandos realiza una solicitud autenticada a la API de REST de Chat que responde mediante la publicación de un mensaje en un espacio de Chat como una app de Chat.
Cómo solucionar problemas del ejemplo
En esta sección, se describen los problemas comunes que puedes encontrar cuando intentas ejecutar esta muestra.
No tienes permiso para usar esta app
Cuando ejecutes chat_app_auth.py
, es posible que recibas el siguiente error:
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
Este mensaje de error significa que la app de Chat no tiene permiso para publicar mensajes de Chat en el espacio de Chat en el que intenta publicar.
Para resolver el error, agrega la app de Chat al espacio de Chat especificado en chat_app_auth.py
.
Próximo paso
Revisa la documentación de referencia de la API de Chat para saber qué más puede hacer la API de Chat.