Краткое руководство по Node.js

Создайте приложение командной строки Node.js, которое отправляет запросы к API Google Chat.

В кратких руководствах объясняется, как настроить и запустить приложение, вызывающее API Google Workspace. В этом кратком руководстве используется упрощённый подход к аутентификации, подходящий для тестовой среды. В рабочей среде рекомендуем изучить вопросы аутентификации и авторизации, прежде чем выбирать подходящие для вашего приложения учётные данные для доступа .

В этом кратком руководстве используются рекомендуемые клиентские библиотеки API Google Workspace для обработки некоторых деталей процесса аутентификации и авторизации.

Цели

  • Настройте свою среду.
  • Установите клиентскую библиотеку.
  • Настройте образец.
  • Запустите образец.

Предпосылки

Для запуска этого быстрого старта вам потребуются следующие предварительные условия:

Настройте свою среду

Чтобы завершить этот быстрый старт, настройте свою среду.

Включить API

Перед использованием API Google необходимо включить их в проекте Google Cloud. Вы можете включить один или несколько API в одном проекте Google Cloud.

Если вы используете новый проект Google Cloud для выполнения этого краткого руководства, настройте экран согласия OAuth. Если вы уже выполнили этот шаг для своего проекта Cloud, перейдите к следующему разделу.

  1. В консоли Google Cloud перейдите в > > Брендинг .

    Перейти к брендингу

  2. Если вы уже настроили , вы можете настроить следующие параметры экрана согласия OAuth в разделах «Брендинг» , «Аудитория» и «Доступ к данным» . Если вы видите сообщение: пока не настроено , нажмите «Начать» :
    1. В разделе «Информация о приложении» в поле «Имя приложения » введите имя приложения.
    2. В поле Адрес электронной почты службы поддержки пользователей выберите адрес электронной почты службы поддержки, по которому пользователи смогут связаться с вами, если у них возникнут вопросы относительно их согласия.
    3. Нажмите кнопку «Далее» .
    4. В разделе Аудитория выберите Внутренняя .
    5. Нажмите кнопку «Далее» .
    6. В разделе «Контактная информация» введите адрес электронной почты , на который вы можете получать уведомления о любых изменениях в вашем проекте.
    7. Нажмите кнопку «Далее» .
    8. В разделе Готово ознакомьтесь с Политикой обработки данных пользователей API служб Google и, если вы согласны, выберите Я согласен с Политикой обработки данных пользователей API служб Google .
    9. Нажмите «Продолжить» .
    10. Нажмите «Создать» .
  3. На данный момент вы можете пропустить добавление областей действия. В будущем при создании приложения для использования за пределами вашей организации Google Workspace необходимо изменить тип пользователя на «Внешний» . Затем добавьте области действия авторизации, необходимые вашему приложению. Подробнее см. в полном руководстве по настройке согласия OAuth .

Авторизация учетных данных для настольного приложения

Для аутентификации конечных пользователей и доступа к их данным в вашем приложении необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации одного приложения на серверах Google OAuth. Если ваше приложение работает на нескольких платформах, необходимо создать отдельный идентификатор клиента для каждой платформы.
  1. В консоли Google Cloud перейдите в > > Клиенты .

    Перейти к клиентам

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Приложение для ПК .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. Нажмите «Создать» .

    Новые учетные данные появятся в разделе «Идентификаторы клиентов OAuth 2.0».

  6. Сохраните загруженный JSON-файл как credentials.json и переместите его в рабочий каталог.

Настройте приложение Google Chat

Для вызова API Google Chat необходимо настроить приложение Google Chat. Для всех запросов на запись Google Chat атрибутирует приложение Google Chat в пользовательском интерфейсе, используя следующую информацию.

  1. В консоли Google Cloud перейдите на страницу конфигурации API чата:

    Перейти на страницу конфигурации API чата

  2. В разделе «Информация о приложении» введите следующую информацию:

    1. В поле Имя приложения введите Chat API quickstart app .
    2. В поле URL аватара введите https://developers.google.com/chat/images/quickstart-app-avatar.png .
    3. В поле Описание введите Quickstart for calling the Chat API .
  3. В разделе «Интерактивные функции» переведите переключатель «Включить интерактивные функции» в положение «Выкл.», чтобы отключить интерактивные функции для приложения «Чат».

  4. Нажмите «Сохранить» .

Установить клиентскую библиотеку

  • Установите библиотеки с помощью npm:

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

Настройте образец

  1. В рабочем каталоге создайте файл с именем index.js .

  2. Вставьте в файл следующий код:

    чат/быстрый старт/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);

Запустите образец

  1. В вашем рабочем каталоге запустите пример:

    node .
    
  1. При первом запуске образца вам будет предложено разрешить доступ:
    1. Если вы ещё не вошли в свою учётную запись Google, сделайте это при появлении соответствующего запроса. Если вы вошли в несколько учётных записей, выберите одну из них для авторизации.
    2. Нажмите «Принять» .

    Ваше приложение Nodejs запускается и вызывает API Google Chat.

    Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода вам не потребуется проходить авторизацию.

Следующие шаги