Аутентификация и авторизация в качестве пользователя Google Chat

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

После аутентификации и авторизации вызова API с учетными данными пользователя приложения чата могут выполнять следующие действия:

Когда приложение выполняет действие с аутентификацией пользователя (например, создает пространство), Google Chat отображает сообщение об атрибуции, в котором указывается имя приложения, выполнившего действие для пользователя, который его авторизовал.

Приложение Google Chat создает пространство для пользователя.
Рисунок 1. Сообщение об атрибуции, которое отображает Google Chat, когда приложение Chat создает пространство от имени пользователя.

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

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

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

Аутентификация и авторизация с использованием делегирования на уровне всего домена

Если вы являетесь администратором домена, вы можете предоставить общедоменное делегирование полномочий , чтобы разрешить учётной записи службы приложения доступ к данным ваших пользователей, не требуя согласия каждого пользователя. После настройки общедоменного делегирования учётная запись службы может выдавать себя за учётную запись пользователя . Хотя для аутентификации используется учётная запись службы, общедоменное делегирование выдаёт себя за пользователя и, следовательно, считается аутентификацией пользователя . Любую функцию, требующую аутентификации пользователя, можно реализовать с помощью общедоменного делегирования.

Аутентификация и авторизация с использованием прав администратора

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

Обратите внимание, что когда приложение Google Chat выполняет действие с правами администратора, Chat не сообщает пользователям имя приложения Chat, выполнившего действие, или имя администратора, который его авторизовал, а только сообщает пользователям, что действие выполнено администратором их организации.

Предпосылки

Ява

  • Учетная запись Google Workspace Business или Enterprise с доступом к Google Chat .
  • Создайте проект Google Cloud .
  • Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения Chat.
  • JDK 1.7 или более поздняя версия
  • Инструмент управления пакетами Maven
  • Инициализированный проект Maven. Чтобы инициализировать новый проект, выполните следующую команду в командной строке:
    mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Питон

Node.js

Скрипт приложений

Шаг 1: Настройте экран согласия OAuth, укажите области действия и зарегистрируйте свое приложение.

При использовании OAuth 2.0 для авторизации Google отображает пользователю экран согласия, включающий краткое описание вашего проекта, его политик и запрошенных областей авторизации. Настройка экрана согласия OAuth для вашего приложения определяет, что Google будет показывать пользователям и рецензентам, а также регистрирует ваше приложение для его последующей публикации.

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

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

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

  2. Если вы уже настроилиGoogle Auth platform, вы можете настроить следующие параметры экрана согласия OAuth в разделах «Брендинг» , «Аудитория» и «Доступ к данным» . Если вы видите сообщение: Google Auth platform пока не настроено , нажмите «Начать» :

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

    1. В разделе «Manually add scopes» (добавить области вручную) вставьте https://www.googleapis.com/auth/chat.spaces.create , который необходим для запуска примера аутентификации в этом руководстве. Чтобы ознакомиться с доступными областями для Chat API, см. раздел «Области действия Chat API» в разделе «Обзор аутентификации».
    2. Нажмите Добавить в таблицу .
    3. Нажмите Обновить .
    4. После выбора областей, необходимых вашему приложению, на странице «Доступ к данным» нажмите кнопку «Сохранить» .

Шаг 2. Создайте учетные данные идентификатора клиента OAuth в консоли Google Cloud

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

Создайте учетные данные идентификатора клиента OAuth

Выберите тип приложения для получения конкретных инструкций по созданию идентификатора клиента OAuth:

Веб-приложение

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Веб-приложение .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. Добавьте авторизованные URI, связанные с вашим приложением:
    • Клиентские приложения (JavaScript) – в разделе «Авторизованные источники JavaScript» нажмите « Добавить URI» . Затем введите URI для использования в запросах браузера. Он определяет домены, с которых ваше приложение может отправлять запросы API на сервер OAuth 2.0.
    • Серверные приложения (Java, Python и другие) — в разделе «Авторизованные URI перенаправления» нажмите « Добавить URI» . Затем введите URI конечной точки, на которую сервер OAuth 2.0 может отправлять ответы.
  6. Нажмите «Создать» .

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

    Обратите внимание на идентификатор клиента. Секреты клиента не используются в веб-приложениях.

Андроид

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Android .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. В поле «Имя пакета» введите имя пакета из файла AndroidManifest.xml .
  6. В поле «Отпечаток сертификата SHA-1» введите сгенерированный отпечаток сертификата SHA-1 .
  7. Нажмите «Создать» .

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

iOS

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > iOS .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. В поле «Идентификатор пакета» введите идентификатор пакета, указанный в файле Info.plist приложения.
  6. Необязательно: если ваше приложение представлено в Apple App Store, введите идентификатор App Store.
  7. Необязательно: в поле «Идентификатор команды» введите уникальную строку из 10 символов, сгенерированную Apple и назначенную вашей команде.
  8. Нажмите «Создать» .

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

Chrome-приложение

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Расширение Chrome .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. В поле «Идентификатор элемента» введите уникальный 32-символьный идентификатор вашего приложения. Этот идентификатор можно найти в URL-адресе вашего приложения в интернет-магазине Chrome и на панели разработчика интернет-магазина Chrome .
  6. Нажмите «Создать» .

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

Приложение для ПК

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

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

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

Телевизоры и устройства ввода с ограниченным доступом

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

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

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

Универсальная платформа Windows (UWP)

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

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

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Универсальная платформа Windows (UWP) .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. В поле «Идентификатор магазина» введите уникальный 12-значный идентификатор вашего приложения в Microsoft Store. Этот идентификатор можно найти в URL-адресе вашего приложения в Microsoft Store и в Центре партнёров .
  6. Нажмите «Создать» .

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

Загрузите JSON-файл секретного ключа клиента

Файл секретного кода клиента — это JSON-представление учетных данных идентификатора клиента OAuth, на которые ваше приложение чата может ссылаться при предоставлении учетных данных.

  1. В консоли Google Cloud перейдите в > API и службы > Учетные данные .

    Перейти к учетным данным

  2. В разделе «Идентификаторы клиентов OAuth 2.0» нажмите на созданный вами идентификатор клиента.

  3. Нажмите «Загрузить JSON» .

  4. Сохраните файл как credentials.json .

Шаг 3: Установка клиентской библиотеки Google и других зависимостей

Установите клиентскую библиотеку Google и другие зависимости, необходимые для проекта.

Ява

Чтобы добавить клиентские библиотеки Google и другие необходимые зависимости в ваш проект Maven, отредактируйте файл pom.xml в каталоге вашего проекта и добавьте следующие зависимости:

<dependencies>
  <!-- ... existing dependencies ... -->
  <dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-chat</artifactId>
    <version>v1-rev20230905-2.0.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.19.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.34.1</version>
  </dependency>
  <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10.1</version>
  </dependency>
</dependencies>

Питон

Если вы еще не установили клиентские библиотеки Google для Python, выполните следующую команду в интерфейсе командной строки:

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

Node.js

Чтобы добавить клиентские библиотеки Google и другие необходимые зависимости в ваш проект Node.js, перейдите в каталог вашего проекта и выполните следующую команду в интерфейсе командной строки:

npm install "@googleapis/chat" open server-destroy

Скрипт приложений

В этом примере используется служба Advanced Chat для вызова API Google Chat. Чтобы включить службу для вашего проекта Apps Script:

  1. Слева нажмите Редактор .
  2. Слева, рядом с пунктом Услуги , нажмите услугу .
  3. Выберите API чата Google .
  4. В разделе «Версия» выберите v1 .
  5. Нажмите «Добавить» .

Вы можете использовать любой язык, поддерживаемый нашими клиентскими библиотеками .

Шаг 4: Напишите скрипт, который вызывает API чата

Вызов API с авторизацией OAuth — многоэтапный процесс. В веб-приложениях или настольных приложениях этот процесс обычно выглядит следующим образом:

  1. Приложение перенаправляет пользователя на страницу авторизации, запрашивая доступ к его данным, указанным в областях авторизации. Приложение идентифицирует себя с помощью учётных данных клиента.
  2. Пользователь просматривает запрашиваемые приложением разрешения и одобряет запрос.
  3. Сервер аутентификации Google перенаправляет браузер на конечную точку HTTP приложения вместе с кодом авторизации.
  4. Приложение отправляет еще один запрос на сервер авторизации Google для обмена кода авторизации на токен доступа.
  5. Приложение использует токен доступа для вызова API от имени пользователя.

Дополнительную информацию о процессе авторизации OAuth см. в руководстве по использованию OAuth 2.0 для доступа к API Google .

В следующих примерах кода на Java, Python и Node.js используется клиентская библиотека для выполнения процесса авторизации OAuth. Она открывает локальный HTTP-сервер для получения кода авторизации с сервера авторизации, который затем обменивается на токен доступа. В примере кода Apps Script этот процесс авторизации обрабатывается Apps Script.

После завершения процесса аутентификации скрипт выполняет аутентификацию с помощью API чата, используя токен доступа пользователя, а затем создает пространство.

Ява

  1. В каталоге вашего проекта откройте файл src/main/java/com/google/chat/app/authsample/App.java .
  2. Замените содержимое App.java следующим кодом:

    package com.google.chat.app.authsample;
    
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.HttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.chat.v1.HangoutsChat;
    import com.google.api.services.chat.v1.model.Space;
    
    import java.io.InputStreamReader;
    import java.util.Collection;
    import java.util.Collections;
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    public class App {
        // Application OAuth credentials.
        private static final String KEYS_RESOURCE_URI = "/credentials.json";
    
        // Define your app's authorization scopes.
        private static final Collection<String> SCOPES =
            Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create");
    
        // Directory to store user credentials.
        private static final java.io.File DATA_STORE_DIR =
            new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app");
    
        // Global instance of the JSON factory.
        private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
        // Global instance of the HTTP transport.
        private static HttpTransport httpTransport;
    
        // Global instance of the DataStoreFactory. The best practice is to make it a single
        // globally shared instance across your application.
        private static FileDataStoreFactory dataStoreFactory;
    
        public static void main( String[] args ) {
            try {
                // Run app.
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
                Credential userCredential = authorize();
                Space response = App.createChatSpace(userCredential);
                // Print details about the created space.
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * Authorizes the installed application to access user's protected data.
         */
        private static Credential authorize() throws Exception {
            // Load client secrets.
            GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                new InputStreamReader(App.class.getResourceAsStream("/credentials.json")));
            // Set up authorization code flow.
            GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(dataStoreFactory)
                .build();
            // Authorize.
            return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
        }
    
        /**
         * Creates a Chat space.
         */
        private static Space createChatSpace(Credential userCredential) throws Exception {
            // Build the Chat API client and authenticate with the user account.
            HangoutsChat chatService = new HangoutsChat.Builder(
                httpTransport, JSON_FACTORY, userCredential)
                .setApplicationName("auth-sample-app")
                .build();
    
            // Create a Chat space.
            Space space = new Space()
                // To create a named space, set spaceType to SPACE.
                .setSpaceType("SPACE")
                // The user-visible name of the space.
                .setDisplayName("API-made");
            return chatService.spaces().create(space).execute();
        }
    }
    
  3. Создайте новый подкаталог с именем resources в каталоге вашего проекта.

  4. Скопируйте файл credentials.json в подкаталог resources .

  5. Чтобы настроить Maven для включения файла секретов клиента в пакет проекта, отредактируйте файл pom.xml в каталоге вашего проекта и добавьте следующую конфигурацию в раздел <build> :

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. Чтобы настроить Maven для включения зависимостей в пакет проекта и выполнения основного класса вашего приложения, отредактируйте файл pom.xml в каталоге вашего проекта и добавьте следующую конфигурацию в раздел <plugins> :

    <plugins>
      <!-- ... existing configurations ... -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.google.chat.app.authsample.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
    

Питон

  1. Сохраните следующий код в файле с именем chat_space_create_named.py в том же каталоге, где находится credentials.json :

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # 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(
                        'credentials.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 space.
      print(result)
    
    if __name__ == '__main__':
      main()
    

Node.js

  1. Сохраните следующий код в файле с именем chat_space_create_named.js в том же каталоге, где находятся проект Node.js и credentials.json :

    const fs = require('fs');
    const path = require('path');
    const http = require('http');
    const url = require('url');
    const destroyer = require('server-destroy');
    
    const chat = require('@googleapis/chat');
    
    // Application OAuth credentials.
    const keys = require('./credentials.json').installed;
    
    // Define your app's authorization scopes.
    // When modifying these scopes, delete the file token.json, if it exists.
    const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"];
    
    // Create a new OAuth2 client with the configured keys.
    const oauth2Client = new chat.auth.OAuth2(
      keys.client_id,
      keys.client_secret,
      'http://localhost:3000'
    );
    
    /**
     * Opens an HTTP server to accept the OAuth callback.
     * In this simple example, the only request to our webserver is to /?code=<code>.
     */
    async function authenticate(scopes) {
      const opn = (await import('open')).default;
    
      return new Promise((resolve, reject) => {
        // Generate the URL for authorization.
        const authorizeUrl = oauth2Client.generateAuthUrl({
          access_type: 'offline',
          scope: scopes.join(' '),
        });
        // Start the HTTP server to listen for the callback.
        const server = http
          .createServer(async (req, res) => {
            try {
              const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
              res.end('Authentication successful! Please return to the console.');
              server.destroy();
              const { tokens } = await oauth2Client.getToken(qs.get('code'));
              oauth2Client.credentials = tokens;
              resolve(oauth2Client);
            } catch (e) {
              reject(e);
            }
          })
          .listen(3000, () => {
            // Open the browser to the authorize URL to start the workflow.
            opn(authorizeUrl, { wait: false }).then(cp => cp.unref());
          });
        destroyer(server);
      });
    }
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    async function createSpace() {
      // Create the Chat API client and authenticate with the authorized user.
      const chatClient = await chat.chat({
        version: 'v1',
        auth: oauth2Client
      });
    
      // Call the Chat API to create a space.
      const result = await chatClient.spaces.create({
    
        // Details about the space to create.
        requestBody: {
    
          // To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          // The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      });
      return result;
    }
    
    // Authenticate the user, execute the function,
    // then print details about the created space.
    authenticate(scopes)
      .then(createSpace)
      .then(console.log);
    

Скрипт приложений

  1. В редакторе Apps Script отредактируйте файл appsscript.json и добавьте область OAuth, необходимую для вызова API:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. Сохраните следующий код в файле с именем ChatSpaceCreateNamed.gs в вашем проекте Apps Script:

    /**
     * Authenticates with Chat API via user credentials, then creates a
     * Chat space.
     */
    function createSpace() {
      try {
        // Details about the space to create.
        // To create a named space, set spaceType to SPACE.
        // The user-visible name of the space is displayName.
        const space = {'displayName': 'API-made', 'spaceType': 'SPACE'};
    
        // Call Chat API with user credentials to create the space.
        const result = Chat.Spaces.create(space);
    
        // Log details about the created space.
        console.log(result);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }
    

Шаг 5: Запустите пример скрипта

Чтобы запустить пример, из командной строки перейдите в каталог, в котором находятся файлы вашего проекта, а затем выполните следующую команду:

Ява

mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar

Питон

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

Скрипт приложений

Откройте файл ChatSpaceCreateNamed.gs в редакторе скриптов приложений и нажмите «Выполнить» .

Откроется браузер и предложит вам войти в свою учетную запись Google:

Вход для авторизации приложения чата.

Рисунок 2. Экран согласия OAuth, на котором вы выбираете учетную запись для аутентификации приложения.

После входа в систему появится экран согласия OAuth, на котором вам будет предложено предоставить разрешение приложению.

После предоставления разрешения скрипт вызывает Chat API , который в ответ создаёт чат-пространство с отображаемым именем API-made . Консоль выводит информацию о вызове API. Чтобы найти нужное пространство, перейдите на панель «Пространства» в Google Chat.

Устранение неполадок в примере

При запуске chat_space_create_named.py вы можете получить сообщение об ошибке:

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

Это сообщение об ошибке означает, что файл credentials.json , загруженный из консоли Google Cloud, не начинается со свойств "web" или "installed" . Если после аутентификации с использованием загруженного файла ваш код не сохраняет токен доступа в новом файле, например, token.json , токен доступа записывается в credentials.json , что может привести к этой ошибке при последующих попытках авторизации.

Чтобы устранить ошибку, повторно загрузите файл секретного ключа клиента из консоли Google Cloud и сохраните новый файл на месте текущего файла.