Autentica y autoriza usuarios (Vista previa para desarrolladores)

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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. Primero, se explica cómo crear credenciales de ID de cliente de OAuth 2.0. Luego, se muestra cómo escribir una secuencia de comandos que use las credenciales para autenticarse con la API de Chat y agregar la aplicación de Chat a un espacio de Chat.

La autenticación y la autorización con credenciales de usuario permiten que las apps de chat accedan a los datos del usuario y realicen operaciones en nombre de este. Por ejemplo, después de autenticar y autorizar las credenciales de usuario, las aplicaciones 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 podría mostrar un mensaje de atribución que indique a los usuarios el nombre de la app que realizó la acción en nombre del usuario que la autorizó.

Si tu app de Chat no accede a los datos del usuario ni realiza acciones en nombre de un usuario, procura autenticarla como app.

Para obtener más información sobre cuándo las apps de chat requieren autenticación y qué tipo de autenticación usar, consulta Tipos de autenticación requerida en la descripción general de la autenticación y autorización de la API de Chat.

Requisitos previos

Para ejecutar el ejemplo en esta guía, necesitas los siguientes requisitos previos:

Python

Paso 1: Instala la biblioteca cliente de Google

Si aún no instalaste las bibliotecas cliente de Google para tu lenguaje preferido, ejecuta el siguiente comando en tu 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.

Cuando usas OAuth 2.0 para la autorización, Google muestra una pantalla de consentimiento al usuario que incluye un resumen del proyecto, sus políticas y los alcances de autorización solicitados. La configuración de la pantalla de consentimiento de OAuth de tu app define qué muestra Google 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 fuera de tu organización de Google Workspace.

  1. En la consola de Google Cloud, ve a 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 permisos de autorización que requiere tu app, haz clic en Actualizar y, luego, haz clic en Guardar y continuar.

  5. Revisa el resumen del 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. Un ID de cliente se usa con el fin de identificar una sola app para los servidores de OAuth de Google. Si tu app se ejecuta en varias plataformas (como Android, iOS y la Web), deberás crear un ID de cliente diferente para cada plataforma.

Crear credenciales del ID de cliente de OAuth

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

Aplicación web

  1. En la consola de Google Cloud, ve a 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 un URI para usar en 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 y más): 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 del cliente OAuth que muestra tu nuevo ID de cliente y secreto de cliente.

    Anota el ID de cliente. Los secretos del cliente no se usan para las aplicaciones web.

  7. Haz clic en OK. La credencial creada recientemente se muestra en ID de cliente OAuth 2.0.
  8. Opcional: Si creas credenciales como un requisito previo para una guía de inicio rápido de JavaScript, también debes generar una clave de API.

Android

  1. En la consola de Google Cloud, ve a 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", ingrese el nombre del paquete de su 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 del cliente OAuth que muestra tu nuevo ID de cliente.
  8. Haz clic en OK. La credencial creada aparece en "ID de cliente OAuth 2.0".

iOS

  1. En la consola de Google Cloud, ve a 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 su aplicación aparece en App Store de Apple, ingrese el ID de la tienda de aplicaciones.
  7. Opcional: En el campo “ID del equipo”, ingresa la string única de 10 caracteres que genera Apple y se asigna a tu equipo.
  8. Haz clic en Crear. Aparecerá la pantalla del cliente OAuth que muestra tu nuevo ID de cliente y secreto de cliente.
  9. Haz clic en OK. La credencial creada aparece en "ID de cliente OAuth 2.0".

App de Chrome

  1. En la consola de Google Cloud, ve a 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 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 única de ID de 32 caracteres de tu aplicación. 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 del cliente OAuth que muestra tu nuevo ID de cliente y secreto de cliente.
  7. Haz clic en OK. La credencial creada aparece en "ID de cliente OAuth 2.0".

App de escritorio

  1. En la consola de Google Cloud, ve a 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 del cliente OAuth que muestra tu nuevo ID de cliente y secreto de cliente.
  6. Haz clic en OK. La credencial creada recientemente se muestra en ID de cliente OAuth 2.0.

TVs y dispositivos de entrada limitada

  1. En la consola de Google Cloud, ve a 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 > TV 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 del cliente OAuth que muestra tu nuevo ID de cliente y secreto de cliente.
  6. Haz clic en OK. La credencial creada aparece en "ID de cliente OAuth 2.0".

Plataforma universal de Windows (UWP)

  1. En la consola de Google Cloud, ve a 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 de Windows universal (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 tienda de 12 caracteres de tu aplicación. 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 del cliente OAuth que muestra tu nuevo ID de cliente y secreto de cliente.
  7. Haz clic en OK. La credencial creada aparece en "ID de cliente OAuth 2.0".

Descarga el archivo JSON de 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 tu aplicación de Chat cuando proporciona credenciales.

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

    Ir a Credenciales

  2. En ID de cliente 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: Crea una clave de API

Mientras la autenticación del usuario para la API de Chat esté en vista previa para desarrolladores, su código debe dirigir a una versión de vista previa para desarrolladores del documento de descubrimiento de la API de Chat. Para autenticar el acceso del proyecto de Google Cloud a la versión de vista previa para desarrolladores de la API, genera una clave de API en el proyecto y pásala como parte de la llamada a la API.

Para crear una clave de API, sigue estos pasos:

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

    Ir a Credenciales

  2. Haz clic en Crear credenciales > Clave de API.
  3. Se mostrará tu nueva clave de API.
    • Haz clic en Copiar para copiar tu clave de API y usarla en el código de tu app. La clave de API también se encuentra en la sección “Claves de API” de las credenciales de tu proyecto.
    • Haz clic en Restringir clave para actualizar la configuración avanzada y limitar el uso de tu clave de API. Para obtener más detalles, consulta Aplica restricciones de clave de API.

Paso 5: 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, agrega la app de Chat a un espacio.

Guarda el siguiente código en un archivo llamado chat_create_membership.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.memberships.app"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then adds the Chat app to a Chat space.
    '''

    # Start with no credentials.
    creds = None

    # Check for the file token.json. If it exists, use it for authentication.
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)

    # If there are no valid credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secrets.json', SCOPES)
            creds = flow.run_local_server(port=0)

        # Save the credentials for the next run in a file
        # named token.json.
        with open('token.json', 'w') as token:
            token.write(creds.to_json())

    # Build a service endpoint for Chat API.
    #
    # While user authentication is in developer preview, append the
    # following parameters that let the Python client see a
    # developer preview version of the client library:
    #
    # discoveryServiceUrl—Points to a developer preview version of the Chat
    # API discovery document.
    #
    # developerKey—An API key created inside the developer preview Google
    # Cloud Project. This API key is used to authenticate the Cloud Project's
    # access to a developer preview API.
    key = 'API_KEY'
    url = 'https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW'
    service = build('chat', 'v1', discoveryServiceUrl=url, developerKey=key, credentials=creds)

    # Set the Chat app as the entity that gets added to the space.
    # 'app' is an alias for the Chat app running the script.
    #
    # To specify a user, set:
    #
    # member = {
    #   'member': {
    #     'name':'users/{user}',
    #     'type':'HUMAN'
    #   }
    # }
    member = {
      'member': {
        'name':'users/app',
        'type': 'BOT'
      }
    }

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

      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      parent='spaces/SPACE',
        body=member).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_create_membership.py y client_secrets.json y, luego, ejecuta el siguiente comando:

Python

python3 chat_create_membership.py

Se abre un navegador web y te solicita que accedas a tu cuenta de Google:

Accede para autorizar una app de Chat

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

Otorga permiso a una app de chat a través de la pantalla de consentimiento de OAuth

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 detalles de la llamada a la API.

Soluciona problemas del ejemplo

Se esperaba un objeto JSON con una sola propiedad para una aplicación "web" o "instalada".

Cuando ejecutes chat_create_membership.py, es posible que recibas el siguiente mensaje de 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 Platform 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 de cliente desde Google Cloud Console y guarda el archivo nuevo en el lugar actual del archivo.

Próximo paso

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