Uwierzytelnianie i autoryzacja jako użytkownik Google Chat

Z tego przewodnika dowiesz się, jak używać protokołu OAuth 2.0 na potrzeby Dane logowania Google do przejdź do Chat API. Uwierzytelnianie i autoryzacja danych logowania użytkownika pozwala aplikacjom Google Chat na dostęp do danych użytkownika w imieniu uwierzytelnionego użytkownika. Poprzez uwierzytelnianie na koncie użytkownika aplikacja ma takie same uprawnienia jak dany użytkownik i może wykonywać działania tak, jakby został wykonany przez tego użytkownika.

Po uwierzytelnieniu i autoryzacji przez wywołanie interfejsu API z danymi logowania użytkownika, :

  • tworzyć pokoi czatu,
  • dodawać użytkowników do pokoi czatu i rozmów grupowych;
  • Dane użytkowników możesz wykonywać w innych interfejsach API Workspace, takich jak:

Gdy aplikacja wykonuje działanie wymagające uwierzytelnienia użytkownika np. tworząc pokój), Google Chat wyświetli wiadomość informując użytkowników o nazwie aplikacji, która wykonała działanie użytkownika, który ją autoryzował.

Aplikacja Google Chat tworzy pokój dla użytkownika.
Rysunek 1. Wiadomość z informacją o atrybucji wyświetlana w Google Chat, gdy aplikacja Google Chat utworzy pokój w imieniu użytkownika.

Aby dowiedzieć się więcej o tym, kiedy aplikacje Google Chat wymagają uwierzytelnienia i jakiego uwierzytelniania użyć, zobacz Typy wymaganego uwierzytelniania w omówieniu uwierzytelniania i autoryzacji interfejsu Chat API.

Uwierzytelnianie i autoryzacja za pomocą przekazywania dostępu w całej domenie

Jeśli jesteś administratorem domeny, możesz przyznać przekazywanie uprawnień w całej domenie do autoryzowania konta usługi aplikacji na potrzeby dostępu do danych bez wymaganie od każdego użytkownika wyrażenia zgody. Gdy skonfigurujesz przekazywanie dostępu w całej domenie, konto usługi może przyjmować tożsamość konta użytkownika. Mimo że konto usługi jest używane do uwierzytelnianie, przekazywanie dostępu w całej domenie polega na podszywaniu się pod użytkownika i dlatego jest uznawane za uwierzytelnianie użytkownika. Wszelkie funkcje, które wymagają użytkownika uwierzytelniania, możesz używać przekazywania dostępu w całej domenie.

Uwierzytelnianie i autoryzacja z użyciem uprawnień administratora

Jeśli jesteś administratorem domeny lub administratorem delegowanym z uprawnieniami administratora, możesz uwierzytelniać i autoryzować wywołania interfejsu Google Chat API z uprawnieniami administratora, ustawiając pole use_admin_access w żądaniach odpowiednich metod. Więcej informacji znajdziesz w dokumentacji API.

Pamiętaj, że gdy aplikacja Google Chat wykona działanie z uprawnieniami administratora, Google Chat nie będzie podawać użytkownikom nazwy aplikacji do obsługi czatu, która je wykonała, ani nazwy administratora, który ją autoryzował. Informację o tym, że czynność została wykonana przez administratora organizacji, Google Chat nie przekazuje użytkownikom informacji o tym, że czynność ta została wykonana przez administratora.

Wymagania wstępne

Aby uruchomić przykład w tym przewodniku, musisz spełnić te wymagania wstępne:

Dodatkowo musisz spełnić te wymagania wstępne w zależności od języka:

Java

  • JDK 1.7 lub nowsza
  • Maven narzędzie do zarządzania pakietami
  • Zainicjowany projekt Maven. Aby zainicjować nowy projekt, uruchom polecenie następujące polecenie w interfejsie wiersza poleceń:

    mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
    

Python

  • Python w wersji 3.6 lub nowszej
  • PIP narzędzie do zarządzania pakietami

Node.js

  • Node.js
  • npm narzędzie do zarządzania pakietami
  • Zainicjowany projekt Node.js. Aby zainicjować nowy projekt, utwórz i przełącz się na nowy folder, a następnie uruchom to polecenie w interfejsie wiersza poleceń:

    npm init
    

Google Apps Script

Krok 1. Skonfiguruj ekran zgody OAuth, określ zakresy i zarejestruj aplikację

Jeśli do autoryzacji używasz protokołu OAuth 2.0, Google wyświetla ekran zgody, aby wraz z podsumowaniem projektu, jego zasadami i żądaniami; zakresów autoryzacji. Konfigurowanie ekranu zgody OAuth aplikacji określa, co Google wyświetla użytkownikom i weryfikatorom, oraz rejestruje aplikację dzięki czemu możesz opublikować go później.

Wszystkie aplikacje korzystające z protokołu OAuth 2.0 wymagają konfiguracji ekranu zgody, ale tylko muszą wyświetlić zakresy aplikacji używanych przez osoby spoza Google Workspace Twojej organizacji.

  1. W konsoli Google Cloud otwórz menu . > Interfejsy API i Usługi > Ekran zgody OAuth.

    Otwórz ekran zgody OAuth

  2. Wybierz typ użytkownika aplikacji, a następnie kliknij Utwórz.

  3. Wypełnij formularz rejestracji aplikacji, a potem kliknij Zapisz i kontynuuj.

  4. Kliknij Dodaj lub usuń zakresy. Dodaj i zweryfikuj pole zakresów autoryzacji wymaganych przez aplikację, kliknij kolejno Zaktualizuj i Zapisz i kontynuuj.

  5. Przejrzyj podsumowanie rejestracji aplikacji. Kliknij Edytuj, aby wprowadzić zmiany, lub kliknij Powrót do panelu.

Krok 2. Utwórz w konsoli Google Cloud dane logowania na identyfikator klienta OAuth

Aby uwierzytelnić się jako użytkownik i uzyskać dostęp do jego danych w aplikacji, musisz: utwórz co najmniej jeden identyfikator klienta OAuth 2.0. Identyfikator klienta służy do identyfikowania z jedną aplikacją na serwery OAuth Google. Jeśli Twoja aplikacja działa na wielu na platformach – takich jak Android, iOS i Internet – musisz utworzyć oddzielny identyfikator klienta dla każdej platformy.

Utwórz dane uwierzytelniające identyfikatora klienta OAuth

Wybierz typ aplikacji, aby uzyskać szczegółowe instrukcje tworzenia identyfikatora klienta OAuth:

Aplikacja internetowa

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Aplikacja internetowa.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Dodaj autoryzowane identyfikatory URI powiązane z Twoją aplikacją:
    • Aplikacje po stronie klienta (JavaScript) – w sekcji Autoryzowane źródła JavaScript kliknij Dodaj identyfikator URI. Następnie wpisz identyfikator URI, którego chcesz używać w przypadku żądań przeglądarki. Identyfikuje domeny, z których aplikacja może wysyłać żądania interfejsu API do serwera OAuth 2.0.
    • Aplikacje po stronie serwera (Java, Python i inne) – w sekcji Autoryzowane identyfikatory URI przekierowania kliknij Dodaj identyfikator URI. Następnie wpisz identyfikator URI punktu końcowego, do którego serwer OAuth 2.0 może wysyłać odpowiedzi.
  6. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.

    Zapisz identyfikator klienta. Tajne klucze klienta nie są używane w aplikacjach internetowych.

  7. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klienta OAuth 2.0.

Android

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Android.
  4. W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu „Nazwa pakietu” wpisz nazwę pakietu z pliku AndroidManifest.xml.
  6. W polu „Odcisk cyfrowy certyfikatu SHA-1” wpisz wygenerowany odcisk cyfrowy certyfikatu SHA-1.
  7. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta.
  8. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.

iOS

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > iOS.
  4. W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu „Identyfikator pakietu” wpisz identyfikator pakietu podany w pliku Info.plist aplikacji.
  6. Opcjonalnie: jeśli Twoja aplikacja jest dostępna w Apple App Store, wpisz identyfikator App Store.
  7. Opcjonalnie: w polu „Identyfikator zespołu” wpisz unikalny 10-znakowy ciąg wygenerowany przez Apple i przypisany do Twojego zespołu.
  8. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
  9. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.

Aplikacja Chrome

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Aplikacja Chrome.
  4. W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu „Identyfikator aplikacji” wpisz unikalny 32-znakowy identyfikator aplikacji. Wartość tego identyfikatora znajdziesz w adresie URL aplikacji w Chrome Web Store oraz w panelu dewelopera Chrome Web Store.
  6. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
  7. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.

Aplikacja komputerowa

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Aplikacja komputerowa.
  4. W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
  6. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klienta OAuth 2.0.

Telewizory Ograniczona liczba urządzeń wejściowych

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Telewizory i Ograniczona liczba urządzeń wejściowych.
  4. W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
  6. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.

Universal Windows Platform (UWP)

  1. W konsoli Google Cloud otwórz Menu > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
  3. Kliknij Typ aplikacji > Platforma uniwersalna Windows (UWP).
  4. W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest wyświetlana tylko w konsoli Google Cloud.
  5. W polu „Identyfikator sklepu” wpisz niepowtarzalną, 12-znakową wartość identyfikatora Microsoft Store dla swojej aplikacji. Znajdziesz go w adresie URL Twojej aplikacji w Microsoft Store oraz w Centrum Partnerów.
  6. Kliknij Utwórz. Pojawi się ekran tworzenia klienta OAuth z nowym identyfikatorem klienta i tajnym kluczem klienta.
  7. Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.

Pobierz plik JSON z tajnym kluczem klienta

Plik z tajnymi kluczami klienta to reprezentacja identyfikatora klienta OAuth w formacie JSON. dane logowania, do których aplikacja Google Chat może się odwoływać, podając dane logowania.

  1. W konsoli Google Cloud otwórz menu . > Interfejsy API i Usługi > Dane logowania.

    Przejdź do danych logowania

  2. W sekcji Identyfikatory klienta OAuth 2.0 kliknij utworzony identyfikator klienta.

  3. Kliknij Pobierz JSON.

  4. Zapisz plik jako client_secrets.json.

Krok 3. Zainstaluj bibliotekę klienta Google i inne zależności

Zainstaluj bibliotekę klienta Google i inne zależności wymagane przez projekt.

Java

Aby dodać biblioteki klienta Google i inne wymagane zależności do W projekcie Maven zmodyfikuj plik pom.xml w katalogu projektu i dodaj atrybut te zależności:

<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>

Python

Jeśli nie masz jeszcze zainstalowanych bibliotek klienta Google dla języka Python, uruchom polecenie następujące polecenie w interfejsie wiersza poleceń:

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

Node.js

Aby dodać biblioteki klienta Google i inne wymagane zależności do w projekcie Node.js, przełącz się do katalogu swojego projektu i uruchom to polecenie w interfejsie wiersza poleceń:

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

Google Apps Script

W tym przykładzie użyto parametru Zaawansowana usługa czatu aby wywołać interfejs Google Chat API. Aby włączyć usługę dla swojego urządzenia Projekt Apps Script:

  1. Po lewej stronie kliknij Edytor .
  2. Po lewej stronie obok opcji Usługi kliknij Dodaj usługę.
  3. Wybierz Google Chat API.
  4. W sekcji Wersja wybierz v1.
  5. Kliknij Dodaj.

Możesz używać dowolnego języka obsługiwanego przez biblioteki klienta.

Krok 4. Napisz skrypt, który wywołuje interfejs Chat API

Wywoływanie interfejsu API z autoryzacją OAuth jest procesem wieloetapowym. W internecie lub w aplikacjach komputerowych wygląda zwykle tak:

  1. Aplikacja kieruje użytkownika na stronę autoryzacji, która prosi o dostęp do użytkownika określonych przez zakresy autoryzacji. Aplikacja identyfikuje się z klientem Dane logowania na potrzeby dokumentu tożsamości.
  2. Użytkownik sprawdza uprawnienia, o które prosi aplikacja i zatwierdza użytkownika.
  3. Serwer uwierzytelniania Google przekierowuje przeglądarkę do protokołu HTTP aplikacji oraz kod autoryzacji.
  4. Aplikacja wysyła kolejne żądanie do serwera autoryzacji Google w celu wymienienie kodu autoryzacji na token dostępu.
  5. Aplikacja używa tokena dostępu do wywoływania interfejsu API w imieniu użytkownika.

Więcej informacji o procesie autoryzacji OAuth znajdziesz w artykule Przewodnik po korzystaniu z protokołu OAuth 2.0 do korzystania z interfejsów API Google

Poniższe przykładowe fragmenty kodu w językach Java, Python i Node.js korzystają z tagu biblioteka klienta aby uruchomić proces autoryzacji OAuth. Otwiera lokalny serwer HTTP, odebrać z serwera autoryzacji kod autoryzacji, który następnie na token dostępu. W przykładowym kodzie Apps Script ten przepływ autoryzacji jest obsługiwane przez Apps Script.

Po zakończeniu procesu uwierzytelniania skrypt uwierzytelnia się za pomocą klucza Chat API za pomocą tokena dostępu użytkownika. a następnie tworzy pokój.

Java

  1. Otwórz plik w katalogu projektu. src/main/java/com/google/chat/app/authsample/App.java
  2. Zastąp zawartość pola App.java tym kodem:

    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 = "/client_secrets.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("/client_secrets.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. Utwórz nowy podkatalog o nazwie resources w katalogu projektu.

  4. Skopiuj plik client_secrets.json do podkatalogu resources.

  5. Aby skonfigurować narzędzie Maven do uwzględnienia pliku z tajnymi kluczami klienta w pakiecie projektu, edytuj plik pom.xml w katalogu projektu i dodaj do niego ten kod do sekcji <build>:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. Aby skonfigurować Maven, aby uwzględnić zależności w pakiecie projektu w celu wykonania głównej klasy aplikacji, edytuj plik pom.xml w katalogu projektu i dodaj tę konfigurację do Sekcja <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>
    

Python

  1. Zapisz ten kod w pliku o nazwie chat_space_create_named.py w ten sam katalog, który zawiera client_secrets.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(
                        'client_secrets.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. Zapisz ten kod w pliku o nazwie chat_space_create_named.js w ten sam katalog, który zawiera projekt Node.js oraz client_secrets.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('./client_secrets.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);
    

Google Apps Script

  1. W edytorze Apps Script edytuj plik appsscript.json. i dodaj zakres protokołu OAuth niezbędny do wywołania interfejsu API:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. Zapisz ten kod w pliku o nazwie ChatSpaceCreateNamed.gs w Projekt 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);
      }
    }
    

Krok 5. Uruchom przykładowy skrypt

Aby uruchomić ten przykład, za pomocą wiersza poleceń przejdź do katalogu, w którym znajduje się w plikach projektu, a następnie uruchom to polecenie:

Java

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

Python

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

Google Apps Script

Otwórz plik ChatSpaceCreateNamed.gs w Apps Script. w edytorze i kliknij Uruchom.

Otworzy się przeglądarka i poprosi o zalogowanie się na konto Google:

Zaloguj się, aby autoryzować aplikację Google Chat.

Rysunek 2. Ekran zgody OAuth, na którym wybierasz konto do uwierzytelniania aplikacji.

Po zalogowaniu się zobaczysz ekran zgody OAuth z prośbą o zgodę aplikacji.

Po przyznaniu uprawnień skrypt wywołuje metodę Chat API, który odpowiada przez utworzenie Pokój czatu o wyświetlanej nazwie API-made. Konsola wydrukuje tekst. szczegóły wywołania interfejsu API. Aby znaleźć pokój, otwórz panel Pokoje w: Google Chat.

Rozwiązywanie problemów z przykładem

Podczas uruchamiania kodu chat_space_create_named.py może pojawić się błąd o następującej treści:

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

Ten komunikat o błędzie oznacza, że pobrany plik client_secrets.json z konsoli Google Cloud nie zaczyna się od "web" ani "installed" usłudze. Po uwierzytelnieniu w pobranym pliku, jeśli kod nie zapiszemy token dostępu w nowym pliku, np. token.json, to token dostępu będzie zapisano w domenie client_secrets.json, co może powodować ten błąd podczas kolejnych prób autoryzacji.

Aby naprawić ten błąd, pobierz plik z tajnym kluczem klienta z konsoli Google Cloud i zapisz nowy plik w miejscu, w którym znajduje się bieżący plik.

  • Jeśli aplikacja musi nadal używać tokenów użytkowników spoza zakresu w ramach pojedynczego procesu, może przechowywać tokeny do wykorzystania w przyszłości. W tym przypadku aplikacja musi bezpiecznie obsługiwać tokeny użytkownika i obsługiwać odświeżanie. unieważnianie i wygaśnięcie tokena. Więcej informacji: Używanie protokołu OAuth 2.0 – przewodnik po sprawdzonych metodach

  • Aby dowiedzieć się, co jeszcze może robić interfejs Chat API, zapoznaj się z Dokumentacja interfejsu Chat API