Autentica y autoriza usuarios

En esta guía, se explica cómo usar OAuth 2.0 con las credenciales de Google de los usuarios para acceder a la API de Chat. La autenticación y la autorización con credenciales de usuario permite que las apps de chat accedan a los datos del usuario y realicen operaciones en nombre del usuario autenticado. Si se autentica en nombre de un usuario, la app tiene los mismos permisos que ese usuario y puede realizar acciones como si este la realizara. Sin embargo, estas apps de chat no se pueden publicar de forma pública. Para obtener más información, consulta Publica apps de Google Chat.

Después de autenticar y autorizar una llamada a la API con las credenciales de usuario, las apps de chat pueden hacer lo siguiente:

Cuando una app realiza una acción con la autenticación del usuario (como la creación de un espacio), Google Chat muestra un mensaje de atribución que les indica a los usuarios el nombre de la app que realizó la acción del usuario que la autorizó.

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.

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, la cuenta de servicio puede 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.

A fin de usar la API de Google Chat para acceder a recursos de una organización de Google Workspace o modificarlos, el usuario debe ser miembro de esa organización. No se admiten usuarios externos ni usuarios que no tengan una cuenta de Google Workspace con acceso a Google Chat.

Requisitos previos

Python

Paso 1: Instala la biblioteca cliente de Google

Si aún no instalaste las bibliotecas cliente de Google para el lenguaje que elegiste, ejecuta el siguiente comando en la interfaz de línea de comandos:

Python

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client

Puedes usar cualquier lenguaje compatible con nuestras bibliotecas cliente.

Paso 2: Configura la pantalla de consentimiento de OAuth, especifica permisos y registra tu app

Cuando usas OAuth 2.0 para la autorización, Google muestra una pantalla de consentimiento al usuario que incluye un resumen de tu proyecto, sus políticas y los permisos de autorización solicitados. La configuración de la pantalla de consentimiento de OAuth de tu app define lo que Google muestra a los usuarios y revisores de apps, y registra tu app para que puedas publicarla más tarde.

Todas las apps que usan OAuth 2.0 requieren una configuración de pantalla de consentimiento, pero solo necesitas enumerar los permisos para las apps que usan las personas ajenas a tu organización de Google Workspace.

  1. En la consola de Google Cloud, ve al menú > API y servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. Seleccione el tipo de usuario para su aplicación y, luego, haga clic en Crear.

  3. Complete el formulario de registro de la aplicación y, luego, haga clic en Guardar y continuar.

  4. Haz clic en Agregar o quitar permisos. Agrega y verifica los alcances de autorización que requiere tu app, haz clic en Actualizar y, luego, en Guardar y continuar.

  5. Revisa el resumen de registro de tu app. Haz clic en Editar para realizar cambios o en Volver al panel.

Paso 3: Crea credenciales de ID de cliente de OAuth en la consola de Google Cloud

Para autenticarte como usuario final y acceder a los datos del usuario en tu app, debes crear uno o más ID de cliente de OAuth 2.0. Se usa un ID de cliente para identificar una sola app a los servidores OAuth de Google. Si tu app se ejecuta en varias plataformas, como Android, iOS y la Web, debes crear un ID de cliente distinto para cada plataforma.

Crear credenciales de ID de cliente de OAuth

Elige tu tipo de aplicación a fin de obtener instrucciones específicas para crear un ID de cliente de OAuth:

Aplicación web

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > Aplicación web.
  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. Agrega URI autorizados relacionados con tu app:
    • Apps del cliente (JavaScript): En Orígenes autorizados de JavaScript, haz clic en Agregar URI. Luego, ingresa el URI que se usará para las solicitudes del navegador. Esto identifica los dominios desde los cuales tu aplicación puede enviar solicitudes de API al servidor de OAuth 2.0.
    • Apps del servidor (Java, Python, etc.): En URI de redireccionamiento autorizados, haz clic en Agregar URI. Luego, ingresa un URI de extremo al que el servidor de OAuth 2.0 pueda enviar respuestas.
  6. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth, en la que se mostrarán tu nuevo ID de cliente y tu secreto del cliente.

    Anota el ID de cliente. Los Secrets del cliente no se usan en las aplicaciones web.

  7. Haz clic en OK. La credencial recién creada aparecerá en ID de cliente de OAuth 2.0.

Android

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > Android.
  4. En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. En el campo "Nombre del paquete", ingresa el nombre del paquete de tu archivo AndroidManifest.xml.
  6. En el campo "Huella digital del certificado SHA-1", ingresa la huella digital del certificado SHA-1 generada.
  7. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth con tu nuevo ID de cliente.
  8. Haz clic en OK. La credencial creada recientemente aparecerá en "ID de cliente de OAuth 2.0".

iOS

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > iOS.
  4. En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. En el campo "ID del paquete", ingresa el identificador del paquete como aparece en el archivo Info.plist de la app.
  6. Opcional: Si tu app aparece en la App Store de Apple, ingresa el ID de la App Store.
  7. Opcional: En el campo “ID del equipo”, ingresa la string única de 10 caracteres generada por Apple y asignada a tu equipo.
  8. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth, en la que se mostrarán tu nuevo ID de cliente y tu secreto del cliente.
  9. Haz clic en OK. La credencial creada recientemente aparecerá en "ID de cliente de OAuth 2.0".

App de Chrome

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > App de Chrome.
  4. En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. En el campo "ID de aplicación", ingresa la string de ID único de 32 caracteres de tu app. Puedes encontrar este valor de ID en la URL de Chrome Web Store de tu app y en el Panel del desarrollador de Chrome Web Store.
  6. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth, en la que se mostrarán tu nuevo ID de cliente y tu secreto del cliente.
  7. Haz clic en OK. La credencial creada recientemente aparecerá en "ID de cliente de OAuth 2.0".

App de escritorio

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > Aplicación de escritorio.
  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth, en la que se mostrarán tu nuevo ID de cliente y tu secreto del cliente.
  6. Haz clic en OK. La credencial recién creada aparecerá en ID de cliente de OAuth 2.0.

TVs y dispositivos de entrada limitada

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > TVs y dispositivos de entrada limitada.
  4. En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth, en la que se mostrarán tu nuevo ID de cliente y tu secreto del cliente.
  6. Haz clic en OK. La credencial creada recientemente aparecerá en "ID de cliente de OAuth 2.0".

Plataforma universal de Windows (UWP)

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > Plataforma universal de Windows (UWP).
  4. En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en Google Cloud Console.
  5. En el campo "ID de tienda", ingresa el valor único de ID de Microsoft Store de 12 caracteres para tu app. Puedes encontrar este ID en la URL de Microsoft Store de tu app y en el Centro de socios.
  6. Haz clic en Crear. Aparecerá la pantalla de creación de clientes de OAuth, en la que se mostrarán tu nuevo ID de cliente y tu secreto del cliente.
  7. Haz clic en OK. La credencial creada recientemente aparecerá en "ID de cliente de OAuth 2.0".

Descarga el archivo JSON del secreto del cliente

El archivo secreto de cliente es una representación JSON de las credenciales de ID de cliente de OAuth a las que puede hacer referencia la app de Chat cuando proporciona credenciales.

  1. En la consola de Google Cloud, ve al menú > API y servicios > Credenciales.

    Ir a Credenciales

  2. En ID de cliente de OAuth 2.0, haz clic en el ID de cliente que creaste.

  3. Haz clic en Descargar JSON.

  4. Guarda el archivo como client_secrets.json.

Paso 4: Escribe una secuencia de comandos que llame a la API de Chat

El siguiente código usa una biblioteca cliente para llamar a la API de Chat. Se autentica con la API de Chat mediante credenciales de ID de cliente de OAuth y, luego, crea un espacio.

Guarda el siguiente código en un archivo llamado chat_space_create_named.py en el mismo directorio que contiene client_secrets.json:

Python

from __future__ import print_function

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# Define your app's authorization scopes.
# When modifying these scopes, delete the file token.json, if it exists.
SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then creates a Chat space.
    '''

    flow = InstalledAppFlow.from_client_secrets_file(
                      'client_secrets.json', SCOPES)
    creds = flow.run_local_server()

    # Build a service endpoint for Chat API.
    service = build('chat', 'v1', credentials=creds)

    # Use the service endpoint to call Chat API.
    result = service.spaces().create(

      # Details about the space to create.
      body = {

        # To create a named space, set spaceType to SPACE.
        'spaceType': 'SPACE',

        # The user-visible name of the space.
        'displayName': 'API-made'
      }

      ).execute()

    # Prints details about the created membership.
    print(result)

if __name__ == '__main__':
    main()

Paso 5: Ejecuta la secuencia de comandos de ejemplo

Para ejecutar el ejemplo, desde la línea de comandos, navega al directorio que contiene chat_space_create_named.py y client_secrets.json y, luego, ejecuta el siguiente comando:

Python

python3 chat_space_create_named.py

Se abrirá un navegador y se te pedirá que accedas a tu Cuenta de Google.

Accede para autorizar una app de chat.

Figura 1: Pantalla de consentimiento de OAuth en la que seleccionas qué cuenta autenticar la app.

Después de acceder, aparecerá la pantalla de consentimiento de OAuth y se te pedirá que otorgues permiso a la app.

Después de otorgar el permiso, la secuencia de comandos llamará a la API de Chat, que responde agregando la app de Chat a un espacio de Chat. La consola imprime los detalles de la llamada a la API.

Cómo solucionar problemas del ejemplo

Cuando ejecutes chat_space_create_named.py, es posible que recibas el siguiente error:

Expected a JSON object with a single property for a "web" or "installed" application

Este mensaje de error significa que el archivo client_secrets.json que descargaste de Google Cloud Console no comienza con las propiedades "web" o "installed". Después de autenticarte con el archivo descargado, si tu código no guarda el token de acceso en un archivo nuevo como token.json, el token de acceso se escribe en client_secrets.json, lo que puede causar este error durante los intentos de autorización posteriores.

Para resolver el error, vuelve a descargar el archivo secreto del cliente de Google Cloud Console y guarda el archivo nuevo en el lugar actual.

Para obtener más información sobre lo que puede hacer la API de Chat, consulta la documentación de referencia de la API de Chat.