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

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

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

В этом кратком руководстве используются рекомендуемые клиентские библиотеки 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, вы должны будете изменить тип пользователя на External . Затем добавьте области действия авторизации, которые требуются вашему приложению. Чтобы узнать больше, см. полное руководство по настройке согласия 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.

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

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