Als Google Chat-Nutzer authentifizieren und autorisieren

In diesem Leitfaden wird erläutert, wie Sie OAuth 2.0 mit den Google-Anmeldedaten von Nutzern für den Zugriff auf die Chat API verwenden. Durch die Authentifizierung und Autorisierung mit Nutzeranmeldedaten können Chat-Apps auf Nutzerdaten zugreifen und im Namen des authentifizierten Nutzers Vorgänge ausführen. Durch die Authentifizierung im Namen eines Nutzers hat die Anwendung die gleichen Berechtigungen wie dieser Nutzer und kann Aktionen so ausführen, als würde sie von diesem Nutzer ausgeführt werden.

Nach der Authentifizierung und Autorisierung eines API-Aufrufs mit Nutzeranmeldedaten können Chat-Apps Folgendes tun:

Wenn eine App eine Aktion mit Nutzerauthentifizierung ausführt (z. B. einen Bereich erstellt), zeigt Google Chat eine Attributionsnachricht an. Diese enthält den Namen der App, die die Aktion für den autorisierten Nutzer ausgeführt hat.

In der Google Chat App wird ein Gruppenbereich für einen Nutzer erstellt.
Abbildung 1. Die Attributionsnachricht, die in Google Chat angezeigt wird, wenn eine Chat-App im Namen eines Nutzers einen Gruppenbereich erstellt.

Weitere Informationen dazu, wann Chat-Apps eine Authentifizierung erfordern und welche Art von Authentifizierung verwendet werden soll, finden Sie unter Arten der erforderlichen Authentifizierung in der Übersicht zu Authentifizierung und Autorisierung der Chat API.

Mit domainweiter Delegierung authentifizieren und autorisieren

Als Domainadministrator können Sie eine domainweite Delegierung von Befugnissen gewähren, um das Dienstkonto einer Anwendung für den Zugriff auf die Daten Ihrer Nutzer zu autorisieren, ohne dass jeder Nutzer seine Einwilligung geben muss. Nachdem Sie die domainweite Delegierung konfiguriert haben, kann das Dienstkonto die Identität eines Nutzerkontos übernehmen. Obwohl ein Dienstkonto zur Authentifizierung verwendet wird, gibt die domainweite Delegierung die Identität eines Nutzers an und gilt daher als Nutzerauthentifizierung. Für alle Funktionen, die eine Nutzerauthentifizierung erfordern, können Sie die domainweite Delegierung verwenden.

Mit Administratorberechtigungen authentifizieren und autorisieren

Als Domainadministrator oder delegierter Administrator mit Administratorberechtigungen können Sie Ihre Aufrufe an die Google Chat API mit Administratorberechtigungen authentifizieren und autorisieren, indem Sie das Feld use_admin_access in den Anfragen der entsprechenden Methoden festlegen. Weitere Informationen finden Sie in der API-Referenzdokumentation.

Hinweis: Wenn eine Google Chat-App eine Aktion mit Administratorberechtigungen ausführt, wird Nutzern weder der Name der Chat-App, über die die Aktion ausgeführt wurde, noch der Name des Administrators mitgeteilt, der sie autorisiert hat. Nutzer werden lediglich darüber informiert, dass die Aktion vom Administrator ihrer Organisation ausgeführt wird.

Voraussetzungen

Zum Ausführen des Beispiels in dieser Anleitung müssen die folgenden Voraussetzungen erfüllt sein:

Außerdem müssen die folgenden sprachspezifischen Voraussetzungen erfüllt sein:

Java

  • JDK 1.7 oder höher
  • Das Paketverwaltungstool Maven
  • Ein initialisiertes Maven-Projekt. Führen Sie in der Befehlszeile den folgenden Befehl aus, um ein neues Projekt zu initialisieren:

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

Python

  • Python 3.6 oder höher
  • Das Paketverwaltungstool pip

Node.js

  • Node.js
  • Das npm-Paketverwaltungstool
  • Ein initialisiertes Node.js-Projekt. Zum Initialisieren eines neuen Projekts müssen Sie einen neuen Ordner erstellen und dorthin wechseln. Führen Sie dann in der Befehlszeile den folgenden Befehl aus:

    npm init
    

Apps Script

Schritt 1: OAuth-Zustimmungsbildschirm konfigurieren, Bereiche angeben und App registrieren

Wenn Sie OAuth 2.0 zur Autorisierung verwenden, zeigt Google dem Nutzer einen Zustimmungsbildschirm an, der eine Zusammenfassung Ihres Projekts, seiner Richtlinien und der angeforderten Autorisierungsbereiche enthält. Durch die Konfiguration des OAuth-Zustimmungsbildschirms Ihrer App können Sie festlegen, was Google Nutzern und App-Prüfern anzeigt. Außerdem wird Ihre App registriert, damit Sie sie später veröffentlichen können.

Für alle Anwendungen, die OAuth 2.0 verwenden, ist eine Konfiguration des Zustimmungsbildschirms erforderlich. Sie müssen jedoch nur Bereiche für Anwendungen auflisten, die von Personen außerhalb Ihrer Google Workspace-Organisation verwendet werden.

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > OAuth-Zustimmungsbildschirm.

    Zum OAuth-Zustimmungsbildschirm

  2. Wählen Sie den Nutzertyp für Ihre Anwendung aus und klicken Sie auf Erstellen.

  3. Füllen Sie das App-Registrierungsformular aus und klicken Sie dann auf Speichern und fortfahren.

  4. Klicken Sie auf Bereiche hinzufügen oder entfernen. Fügen Sie die für Ihre Anwendung erforderlichen Autorisierungsbereiche hinzu und überprüfen Sie sie. Klicken Sie dann auf Aktualisieren und dann auf Speichern und fortfahren.

  5. Überprüfen Sie die Registrierungsübersicht der App. Klicken Sie auf Bearbeiten, um Änderungen vorzunehmen, oder klicken Sie auf Zurück zum Dashboard.

Schritt 2: OAuth-Client-ID-Anmeldedaten in der Google Cloud Console erstellen

Wenn Sie sich als Endnutzer authentifizieren und in Ihrer Anwendung auf Nutzerdaten zugreifen möchten, müssen Sie eine oder mehrere OAuth 2.0-Client-IDs erstellen. Eine Client-ID wird zur Identifizierung einer einzelnen Anwendung bei Googles OAuth-Servern verwendet. Wenn deine App auf mehreren Plattformen wie Android, iOS und Web läuft, musst du für jede Plattform eine separate Client-ID erstellen.

OAuth-Client-ID-Anmeldedaten erstellen

Wähle deinen Anwendungstyp aus, um spezifische Anweisungen zum Erstellen einer OAuth-Client-ID zu erhalten:

Webanwendung

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Webanwendung.
  4. Geben Sie in das Feld Name einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Fügen Sie zu Ihrer App gehörige autorisierte URIs hinzu:
    • Clientseitige Apps (JavaScript): Klicken Sie unter Autorisierte JavaScript-Quellen auf URI hinzufügen. Geben Sie dann einen URI ein, der für Browseranfragen verwendet werden soll. Hiermit werden die Domains identifiziert, von denen aus Ihre Anwendung API-Anfragen an den OAuth 2.0-Server senden kann.
    • Serverseitige Anwendungen (Java, Python und mehr): Klicken Sie unter Autorisierte Weiterleitungs-URIs auf URI hinzufügen. Geben Sie dann einen Endpunkt-URI ein, an den der OAuth 2.0-Server Antworten senden kann.
  6. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.

    Notieren Sie sich die Client-ID. Clientschlüssel werden nicht für Webanwendungen verwendet.

  7. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter OAuth 2.0-Client-IDs angezeigt.

Android

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Android.
  4. Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie im Feld „Paketname“ den Paketnamen aus der Datei AndroidManifest.xml ein.
  6. Geben Sie im Feld „SHA-1 Certificate Fingerabdruck“ Ihren generierten SHA-1-Zertifikatfingerabdruck ein.
  7. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID angezeigt.
  8. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.

iOS

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > iOS.
  4. Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Gib im Feld „Bundle-ID“ den Bundle-Identifikator so ein, wie er in der Datei Info.plist der App aufgeführt ist.
  6. Optional: Wenn Ihre App im Apple App Store angezeigt wird, geben Sie die App Store-ID ein.
  7. Optional: Geben Sie im Feld „Team-ID“ den eindeutigen 10-stelligen String ein, der von Apple generiert und Ihrem Team zugewiesen wurde.
  8. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
  9. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.

Chrome App

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Chrome-App.
  4. Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie im Feld „Anwendungs-ID“ den eindeutigen ID-String mit 32 Zeichen für Ihre App ein. Sie finden diesen ID-Wert in der Chrome Web Store-URL Ihrer App und im Chrome Web Store-Entwickler-Dashboard.
  6. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
  7. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.

Desktopanwendung

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Desktop-App.
  4. Geben Sie in das Feld Name einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
  6. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter OAuth 2.0-Client-IDs angezeigt.

Fernseher und Geräte mit begrenzter Eingabe

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf App-Typ > Fernseher und Geräte mit begrenzter Eingabe.
  4. Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
  6. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.

Universal Windows Platform (UWP)

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Universelle Windows-Plattform (UWP).
  4. Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie im Feld „Store-ID“ den eindeutigen 12-stelligen Microsoft Store-ID-Wert Ihrer App ein. Sie finden diese ID in der Microsoft Store-URL Ihrer App und im Partnercenter.
  6. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
  7. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.

Clientschlüssel-JSON-Datei herunterladen

Die Clientschlüsseldatei ist eine JSON-Darstellung der OAuth-Client-ID-Anmeldedaten, auf die Ihre Chat-App beim Bereitstellen von Anmeldedaten verweisen kann.

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie unter OAuth 2.0-Client-IDs auf die erstellte Client-ID.

  3. Klicken Sie auf JSON herunterladen.

  4. Speichern Sie die Datei als client_secrets.json.

Schritt 3: Google-Clientbibliothek und andere Abhängigkeiten installieren

Installieren Sie die Google-Clientbibliothek und andere Abhängigkeiten, die für das Projekt erforderlich sind.

Java

Wenn Sie Ihrem Maven-Projekt die Google-Clientbibliotheken und andere erforderliche Abhängigkeiten hinzufügen möchten, bearbeiten Sie die Datei pom.xml im Verzeichnis Ihres Projekts und fügen Sie die folgenden Abhängigkeiten hinzu:

<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

Wenn Sie die Google-Clientbibliotheken für Python noch nicht installiert haben, führen Sie den folgenden Befehl in der Befehlszeile aus:

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

Node.js

Um Ihrem Node.js-Projekt die Google-Clientbibliotheken und andere erforderliche Abhängigkeiten hinzuzufügen, wechseln Sie in das Verzeichnis Ihres Projekts und führen Sie in der Befehlszeile den folgenden Befehl aus:

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

Apps Script

In diesem Beispiel wird der erweiterte Chatdienst verwendet, um die Google Chat API aufzurufen. So aktivieren Sie den Dienst für Ihr Apps Script-Projekt:

  1. Klicken Sie links auf Editor .
  2. Klicken Sie links neben Dienste auf Dienst hinzufügen .
  3. Wählen Sie Google Chat API aus.
  4. Wählen Sie unter Version die Option v1 aus.
  5. Klicken Sie auf Hinzufügen.

Sie können jede von unseren Clientbibliotheken unterstützte Sprache verwenden.

Schritt 4: Script schreiben, mit dem die Chat API aufgerufen wird

Der Aufruf einer API mit OAuth-Autorisierung ist ein mehrstufiger Prozess. In Web- oder Desktop-Anwendungen läuft der Prozess normalerweise so ab:

  1. Die Anwendung leitet den Nutzer zu einer Autorisierungsseite weiter, auf der der Zugriff auf die durch Autorisierungsbereiche angegebenen Nutzerdaten angefordert wird. Die Anwendung identifiziert sich mit Client-ID-Anmeldedaten.
  2. Der Nutzer prüft die von der App angeforderten Berechtigungen und genehmigt die Anfrage.
  3. Der Authentifizierungsserver von Google leitet den Browser zusammen mit einem Autorisierungscode an den HTTP-Endpunkt der Anwendung weiter.
  4. Die Anwendung sendet eine weitere Anfrage an den Autorisierungsserver von Google, um den Autorisierungscode gegen ein Zugriffstoken auszutauschen.
  5. Die Anwendung verwendet das Zugriffstoken, um die API im Namen des Nutzers aufzurufen.

Weitere Informationen zum OAuth-Autorisierungsprozess finden Sie im Leitfaden OAuth 2.0 für den Zugriff auf Google APIs verwenden.

In den folgenden Codebeispielen in Java, Python und Node.js wird eine Clientbibliothek verwendet, um den OAuth-Autorisierungsvorgang auszuführen. Er öffnet einen lokalen HTTP-Server, um den Autorisierungscode vom Autorisierungsserver zu erhalten, den er dann gegen ein Zugriffstoken eintauscht. Im Apps Script-Codebeispiel wird dieser Autorisierungsvorgang von Apps Script verarbeitet.

Nach Abschluss des Authentifizierungsvorgangs authentifiziert sich das Skript mithilfe des Zugriffstokens des Nutzers bei der Chat API und erstellt dann ein Leerzeichen.

Java

  1. Öffnen Sie im Verzeichnis Ihres Projekts die Datei src/main/java/com/google/chat/app/authsample/App.java.
  2. Ersetzen Sie den Inhalt in App.java durch den folgenden Code:

    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. Erstellen Sie im Verzeichnis Ihres Projekts ein neues Unterverzeichnis mit dem Namen resources.

  4. Kopieren Sie die Datei client_secrets.json in das Unterverzeichnis resources.

  5. Um Maven so zu konfigurieren, dass die Datei mit den Clientschlüsseln in das Projektpaket aufgenommen wird, bearbeiten Sie die Datei pom.xml im Verzeichnis Ihres Projekts und fügen Sie die folgende Konfiguration im Abschnitt <build> hinzu:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. Wenn Sie Maven so konfigurieren möchten, dass die Abhängigkeiten in das Projektpaket aufgenommen und die Hauptklasse Ihrer Anwendung ausgeführt wird, bearbeiten Sie die Datei pom.xml im Verzeichnis Ihres Projekts und fügen Sie die folgende Konfiguration in den Abschnitt <plugins> ein:

    <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. Speichern Sie den folgenden Code in einer Datei mit dem Namen chat_space_create_named.py im selben Verzeichnis, das auch client_secrets.json enthält:

    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. Speichern Sie den folgenden Code in einer Datei mit dem Namen chat_space_create_named.js im selben Verzeichnis, in dem sich das Node.js-Projekt und client_secrets.json befinden:

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

Apps Script

  1. Bearbeiten Sie im Apps Script-Editor die Datei appsscript.json und fügen Sie den erforderlichen OAuth-Bereich zum Aufrufen der API hinzu:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. Speichern Sie den folgenden Code in Ihrem Apps Script-Projekt in einer Datei mit dem Namen ChatSpaceCreateNamed.gs:

    /**
     * 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);
      }
    }
    

Schritt 5: Beispielskript ausführen

Um das Beispiel auszuführen, rufen Sie über die Befehlszeile das Verzeichnis auf, das Ihre Projektdateien enthält, und führen dann den folgenden Befehl aus:

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

Apps Script

Öffnen Sie die Datei ChatSpaceCreateNamed.gs im Apps Script-Editor und klicken Sie auf Ausführen.

Ein Browser wird geöffnet und Sie werden aufgefordert, sich in Ihrem Google-Konto anzumelden:

Melde dich an, um eine Chat-App zu autorisieren.

Abbildung 2. OAuth-Zustimmungsbildschirm, in dem Sie das Konto für die Authentifizierung der Anwendung auswählen.

Nach der Anmeldung wird der OAuth-Zustimmungsbildschirm angezeigt und Sie werden aufgefordert, der Anwendung die Berechtigung zu erteilen.

Nachdem Sie die Berechtigung erteilt haben, ruft das Skript die Chat API auf, die als Antwort den Chatbereich mit dem Anzeigenamen API-made erstellt. Die Console gibt Details zum API-Aufruf aus. Sie finden den Gruppenbereich in Google Chat im Bereich Gruppenbereiche.

Fehlerbehebung für das Beispiel

Wenn Sie chat_space_create_named.py ausführen, erhalten Sie möglicherweise folgende Fehlermeldung:

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

Diese Fehlermeldung bedeutet, dass die Datei client_secrets.json, die Sie aus der Google Cloud Console heruntergeladen haben, nicht mit dem Attribut "web" oder "installed" beginnt. Wenn Ihr Code das Zugriffstoken nach der Authentifizierung mit der heruntergeladenen Datei nicht in einer neuen Datei wie token.json speichert, wird das Zugriffstoken in client_secrets.json geschrieben. Dies kann bei nachfolgenden Autorisierungsversuchen zu diesem Fehler führen.

Um den Fehler zu beheben, laden Sie die Clientschlüsseldatei noch einmal aus der Google Cloud Console herunter und speichern die neue Datei am Speicherort der aktuellen Datei.

  • Wenn Ihre Anwendung die Nutzertokens außerhalb des Bereichs eines einzelnen Ablaufs weiterhin verwenden muss, kann sie die Tokens speichern, um sie später wiederzuverwenden. In diesem Fall muss Ihre Anwendung Nutzertokens sicher verarbeiten und den Widerruf und Ablauf von Aktualisierungstokens verarbeiten. Weitere Informationen finden Sie unter Best Practices für OAuth 2.0.

  • Informationen zu den weiteren Funktionen der Chat API finden Sie in der Referenzdokumentation zur Chat API.