Guía de inicio rápido de Node.js

En los guías de inicio rápido, se explica cómo configurar y ejecutar una app que llama a una API de Google Workspace.

Las guías de inicio rápido de Google Workspace usan las bibliotecas cliente de la API para controlar algunos detalles del flujo de autenticación y autorización. Te recomendamos que uses las bibliotecas cliente para tus propias apps. En esta guía de inicio rápido, se usa un enfoque de autenticación simplificado que es adecuado para un entorno de prueba. En el caso de un entorno de producción, te recomendamos que aprendas sobre la autenticación y autorización antes de elegir las credenciales de acceso adecuadas para tu app.

Crea una aplicación de línea de comandos de Node.js que realice solicitudes a la API de Google Chat.

Objetivos

  • Configurar el entorno
  • Instalar la biblioteca cliente.
  • Configura la muestra.
  • Ejecuta la muestra.

Requisitos previos

Para ejecutar esta guía de inicio rápido, necesitas los siguientes requisitos previos:

Configura tu entorno

Para completar esta guía de inicio rápido, configura tu entorno.

Habilita la API

Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud. Puedes activar una o más APIs en un solo proyecto de Google Cloud.

Si usas un proyecto de Google Cloud nuevo para completar esta guía de inicio rápido, configura la pantalla de consentimiento de OAuth y agrégate como usuario de prueba. Si ya completaste este paso para tu proyecto de Cloud, ve a la siguiente sección.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. En Tipo de usuario, selecciona Interno y, luego, haz clic en Crear.
  3. Completa el formulario de registro de la aplicación y, luego, haz clic en Guardar y continuar.
  4. Por ahora, puedes omitir agregar permisos y hacer clic en Guardar y continuar. En el futuro, cuando crees una app para usarla fuera de tu organización de Google Workspace, debes cambiar el Tipo de usuario a Externo y, luego, agregar los permisos de autorización que requiere tu app.

  5. Revisa el resumen del registro de tu app. Para realizar cambios, haz clic en Editar. Si el registro de la app parece correcto, haz clic en Volver al panel.

Cómo autorizar credenciales para una aplicación de escritorio

Para autenticar a los usuarios finales y acceder a sus datos en tu app, debes crear uno o más IDs 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, debes crear un ID de cliente independiente para cada una.
  1. En la consola de Google Cloud, ve a Menú > APIs 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 para computadoras.
  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
  5. Haz clic en Crear. Aparecerá la pantalla Se creó el cliente de OAuth, que muestra tu nuevo ID de cliente y secreto de cliente.
  6. Haz clic en Aceptar. La credencial recién creada aparecerá en IDs de cliente de OAuth 2.0.
  7. Guarda el archivo JSON descargado como credentials.json y muévelo al directorio de trabajo.

Configura la app de Google Chat

Para llamar a la API de Google Chat, debes configurar una app de Google Chat. Para cualquier solicitud de escritura, Google Chat atribuye la app de Google Chat en la IU con la siguiente información.

  1. En la consola de Google Cloud, ve a la página Configuración de la API de Chat:

    Ve a la página Configuración de la API de Chat

  2. En Información de la aplicación, ingresa la siguiente información:

    1. En el campo Nombre de la app, ingresa Chat API quickstart app.
    2. En el campo URL del avatar, ingresa https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. En el campo Descripción, ingresa Quickstart for calling the Chat API.
  3. En Funciones interactivas, haz clic en el botón de activación Habilitar funciones interactivas para inhabilitarlas en la app de Chat.

  4. Haz clic en Guardar.

Instala la biblioteca cliente

  • Instala las bibliotecas con npm:

    npm install @google-apps/chat @google-cloud/local-auth@2.1.0 --save
    

Configura la muestra

  1. En tu directorio de trabajo, crea un archivo llamado index.js.

  2. En el archivo, pega el siguiente código:

    chat/quickstart/index.js
    const fs = require('fs').promises;
    const path = require('path');
    const process = require('process');
    const {authenticate} = require('@google-cloud/local-auth');
    const {ChatServiceClient} = require('@google-apps/chat');
    const {auth} = require('google-auth-library');
    
    // If modifying these scopes, delete token.json.
    const SCOPES = ['https://www.googleapis.com/auth/chat.spaces.readonly'];
    
    // 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.
    const TOKEN_PATH = path.join(process.cwd(), 'token.json');
    const CREDENTIALS_PATH = path.join(process.cwd(), 'credentials.json');
    
    /**
     * Reads previously authorized credentials from the save file.
     *
     * @return {Promise<OAuth2Client|null>}
     */
    async function loadSavedCredentialsIfExist() {
      try {
        const content = await fs.readFile(TOKEN_PATH);
        const credentials = JSON.parse(content);
        return auth.fromJSON(credentials);
      } catch (err) {
        console.log(err);
        return null;
      }
    }
    
    /**
     * Serializes credentials to a file compatible with GoogleAuth.fromJSON.
     *
     * @param {OAuth2Client} client
     * @return {Promise<void>}
     */
    async function saveCredentials(client) {
      const content = await fs.readFile(CREDENTIALS_PATH);
      const keys = JSON.parse(content);
      const key = keys.installed || keys.web;
      const payload = JSON.stringify({
        type: 'authorized_user',
        client_id: key.client_id,
        client_secret: key.client_secret,
        refresh_token: client.credentials.refresh_token,
      });
      await fs.writeFile(TOKEN_PATH, payload);
    }
    
    /**
     * Load or request or authorization to call APIs.
     *
     * @return {Promise<OAuth2Client>}
     */
    async function authorize() {
      let client = await loadSavedCredentialsIfExist();
      if (client) {
        return client;
      }
      client = await authenticate({
        scopes: SCOPES,
        keyfilePath: CREDENTIALS_PATH,
      });
      if (client.credentials) {
        await saveCredentials(client);
      }
      return client;
    }
    
    /**
     * Lists spaces with user credential.
     * @param {OAuth2Client} authClient An authorized OAuth2 client.
     */
    async function listSpaces(authClient) {
      // Create a client
      const chatClient = new ChatServiceClient({
        authClient: authClient,
        scopes: SCOPES,
      });
    
      // Initialize request argument(s)
      const request = {
        // Filter spaces by space type (SPACE or GROUP_CHAT or DIRECT_MESSAGE)
        filter: 'space_type = "SPACE"'
      };
    
      // Make the request
      const pageResult = chatClient.listSpacesAsync(request);
    
      // Handle the response. Iterating over pageResult will yield results and
      // resolve additional pages automatically.
      for await (const response of pageResult) {
        console.log(response);
      }
    }
    
    authorize().then(listSpaces).catch(console.error);

Ejecuta la muestra

  1. En tu directorio de trabajo, ejecuta la muestra:

    node .
    
  1. La primera vez que ejecutes la muestra, se te solicitará que autorices el acceso:
    1. Si aún no accediste a tu Cuenta de Google, hazlo cuando se te solicite. Si accedeste a varias cuentas, selecciona una para usarla en la autorización.
    2. Haz clic en Aceptar.

    Tu aplicación de Nodejs se ejecuta y llama a la API de Google Chat.

    La información de autorización se almacena en el sistema de archivos, por lo que la próxima vez que ejecutes el código de muestra, no se te solicitará autorización.

Próximos pasos