In diesem Leitfaden wird erläutert, wie Sie mit den Google-Anmeldedaten von Nutzern über OAuth 2.0 auf die Chat API zugreifen. Durch die Authentifizierung und Autorisierung mit Nutzeranmeldedaten können Chat-Apps auf Nutzerdaten zugreifen und Vorgänge im Namen des authentifizierten Nutzers ausführen. Durch die Authentifizierung im Namen eines Nutzers hat die App dieselben Berechtigungen wie dieser Nutzer und kann Aktionen ausführen, als wären sie von diesem Nutzer ausgeführt worden.
Nachdem ein API-Aufruf mit Nutzeranmeldedaten authentifiziert und autorisiert wurde, können Chat-Apps Folgendes tun:
- Chatbereiche erstellen
- Nutzer zu Chat-Gruppenbereichen und ‑Gruppenunterhaltungen hinzufügen
- Mit Nutzerdaten in anderen Workspace-APIs arbeiten, z. B. in folgenden:
Wenn eine App eine Aktion mit Nutzerauthentifizierung ausführt, z. B. einen Bereich erstellt, wird in Google Chat eine Attributionsmeldung angezeigt, in der Nutzer über den Namen der App informiert werden, die die Aktion für den Nutzer ausgeführt hat, der sie autorisiert hat.

Weitere Informationen dazu, wann für Chat-Apps eine Authentifizierung erforderlich ist und welche Art von Authentifizierung verwendet werden sollte, finden Sie in der Übersicht zur Authentifizierung und Autorisierung der Chat API unter Arten der erforderlichen Authentifizierung.
Als Google Workspace-Administrator authentifizieren und autorisieren
In diesem Abschnitt wird erläutert, wie Google Workspace-Administratoren Google Chat-Apps und ‑Bereiche in ihrer Organisation mit Nutzerauthentifizierung verwalten können.
Authentifizieren und autorisieren mit domainweiter Delegierung
Wenn Sie ein Domainadministrator sind, können Sie die domainweite Delegierung verwenden, um das Dienstkonto einer Anwendung zu autorisieren, auf die Daten Ihrer Nutzer zuzugreifen, 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 für die Authentifizierung verwendet wird, wird bei der domainweiten Delegierung die Identität eines Nutzers übernommen. Daher gilt sie als Nutzerauthentifizierung. Für alle Funktionen, für die eine Nutzerauthentifizierung erforderlich ist, können Sie die domainweite Delegierung verwenden.
Authentifizierung und Autorisierung mit Administratorberechtigungen
Wenn Sie ein Domainadministrator oder ein delegierter Administrator mit Administratorberechtigungen sind, können Sie Ihre Aufrufe der Google Chat API mit Administratorberechtigungen authentifizieren und autorisieren, indem Sie das Feld useAdminAccess
in den Anfragen der entsprechenden Methoden festlegen. Weitere Informationen finden Sie in der API-Referenzdokumentation.
Wenn eine Google Chat-App eine Aktion mit Administratorberechtigungen ausführt, werden den Nutzern in Chat nicht der Name der Chat-App oder des Administrators angezeigt, der die Aktion autorisiert hat. Sie sehen nur, dass die Aktion vom Administrator ihrer Organisation ausgeführt wird.
Vorbereitung
Java
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat.
- Google Cloud-Projekt erstellen
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, einem Symbol und einer Beschreibung für Ihre Chat-App.
- JDK 1.7 oder höher
- Das Paketverwaltungstool Maven
-
Ein initialisiertes Maven-Projekt. Führen Sie den folgenden Befehl in der Befehlszeile 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
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat.
- Google Cloud-Projekt erstellen
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, einem Symbol und einer Beschreibung für Ihre Chat-App.
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Node.js
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat.
- Google Cloud-Projekt erstellen
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, einem Symbol und einer Beschreibung für Ihre Chat-App.
- Node.js 14 oder höher
- Das Paketverwaltungstool npm
-
Ein initialisiertes Node.js-Projekt. Um ein neues Projekt zu initialisieren, erstellen Sie einen neuen Ordner, wechseln Sie in diesen und führen Sie dann den folgenden Befehl in Ihrer Befehlszeilenschnittstelle aus:
npm init
Apps Script
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat.
- Google Cloud-Projekt erstellen
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, einem Symbol und einer Beschreibung für Ihre Chat-App.
- Erstellen Sie ein eigenständiges Apps Script-Projekt und aktivieren Sie den Advanced Chat Service.
Schritt 1: OAuth-Zustimmungsbildschirm konfigurieren, Bereiche angeben und App registrieren
Wenn Sie für die Autorisierung OAuth 2.0 verwenden, zeigt Google Nutzern einen Zustimmungsbildschirm an, der eine Übersicht Ihres Projekts, seiner Richtlinien und der angeforderten Autorisierungsbereiche enthält. Wenn Sie den OAuth-Zustimmungsbildschirm Ihrer App konfigurieren, legen Sie fest, 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 Apps, die OAuth 2.0 verwenden, ist eine Konfiguration des Zustimmungsbildschirms erforderlich. Sie müssen jedoch nur Bereiche für Apps auflisten, die von Personen außerhalb Ihrer Google Workspace-Organisation verwendet werden.
Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Branding auf.
Wenn Sie dieGoogle Auth platformbereits konfiguriert haben, können Sie die folgenden Einstellungen für den OAuth-Zustimmungsbildschirm unter Branding, Zielgruppe und Datenzugriff konfigurieren. Wenn Sie die Meldung Google Auth platform noch nicht konfiguriert sehen, klicken Sie auf Jetzt starten:
- Geben Sie unter App-Informationen für App-Name einen App-Namen ein.
- Wählen Sie unter E-Mail-Adresse des Nutzersupports eine Support-E-Mail-Adresse aus, über die Nutzer Sie mit Fragen zu ihrer Einwilligung kontaktieren können.
- Klicken Sie auf Weiter.
- Wählen Sie unter Zielgruppe die Option Intern aus. Wenn Sie Intern nicht auswählen können, wählen Sie Extern aus.
- Klicken Sie auf Weiter.
- Geben Sie unter Kontaktdaten eine E-Mail-Adresse ein, unter der Sie über Änderungen an Ihrem Projekt benachrichtigt werden können.
- Klicken Sie auf Weiter.
- Sehen Sie sich unter Abschließen die Nutzerdatenrichtlinie für Google API-Dienste an. Wenn Sie damit einverstanden sind, wählen Sie Ich stimme der Nutzerdatenrichtlinie für Google API-Dienste zu aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Erstellen.
- Wenn Sie Extern als Nutzertyp ausgewählt haben, fügen Sie Testnutzer hinzu:
- Klicken Sie auf Zielgruppe.
- Klicken Sie unter Testnutzer auf Nutzer hinzufügen.
- Geben Sie Ihre E‑Mail-Adresse und die aller anderen autorisierten Testnutzer ein und klicken Sie auf Speichern.
Klicken Sie auf Datenzugriff > Bereiche hinzufügen oder entfernen. Ein Bereich mit einer Liste der Bereiche für jede API, die Sie in Ihrem Google Cloud-Projekt aktiviert haben, wird angezeigt.
- Fügen Sie unter Bereiche manuell hinzufügen den Bereich
https://www.googleapis.com/auth/chat.spaces.create
ein, der zum Ausführen des Authentifizierungsbeispiels in dieser Anleitung erforderlich ist. Eine Übersicht der verfügbaren Bereiche für die Chat API finden Sie unter Chat API-Bereiche in der Authentifizierungsübersicht. - Klicken Sie auf Zur Tabelle hinzufügen.
- Klicken Sie auf Aktualisieren.
- Nachdem Sie die für Ihre App erforderlichen Bereiche ausgewählt haben, klicken Sie auf der Seite Datenzugriff auf Speichern.
- Fügen Sie unter Bereiche manuell hinzufügen den Bereich
Schritt 2: OAuth-Client-ID-Anmeldedaten in der Google Cloud Console erstellen
Für die Authentifizierung als Endnutzer und für den Zugriff auf Nutzerdaten in Ihrer Anwendung müssen Sie mindestens eine OAuth 2.0-Client-ID erstellen. Eine Client-ID wird zur Identifizierung einer einzelnen Anwendung bei Googles OAuth-Servern verwendet. Wenn Ihre App auf mehreren Plattformen wie Android, iOS und im Web ausgeführt wird, müssen Sie für jede Plattform eine separate Client-ID erstellen.
OAuth 2.0-Client-ID-Anmeldedaten erstellen
Wählen Sie Ihren Anwendungstyp aus, um eine Anleitung zum Erstellen einer OAuth-Client-ID zu erhalten:
Webanwendung
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Webanwendung.
- Geben Sie im Feld Name einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Fügen Sie autorisierte URIs hinzu, die mit Ihrer App verknüpft sind:
- Clientseitige Apps (JavaScript): Klicken Sie unter Autorisierte JavaScript-Quellen auf URI hinzufügen. Geben Sie dann einen URI für Browseranfragen ein. Damit werden die Domains angegeben, von denen Ihre Anwendung API-Anfragen an den OAuth 2.0-Server senden kann.
- Serverseitige Apps (Java, Python usw.): 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.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter OAuth 2.0-Client-IDs angezeigt.
Notieren Sie sich die Client-ID. Clientschlüssel werden nicht für Webanwendungen verwendet.
Android
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Android.
- Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Geben Sie im Feld „Paketname“ den Paketnamen aus Ihrer
AndroidManifest.xml
-Datei ein. - Geben Sie in das Feld „SHA-1-Zertifikatfingerabdruck“ den generierten SHA-1-Zertifikatfingerabdruck ein.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
iOS
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Application type (Anwendungstyp) > iOS.
- Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Geben Sie im Feld „Bundle-ID“ die Bundle-ID ein, wie sie in der
Info.plist
-Datei der App aufgeführt ist. - Optional: Wenn Ihre App im Apple App Store verfügbar ist, geben Sie die App Store-ID ein.
- Optional: Geben Sie im Feld „Team-ID“ den von Apple generierten und 10 Zeichen umfassenden einmaligen String ein, der Ihrem Team zugewiesen wurde.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
Chrome App
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Chrome-Erweiterung.
- Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Geben Sie im Feld „Artikel-ID“ die eindeutige 32‑stellige ID-Zeichenfolge Ihrer App ein. Sie finden diesen ID-Wert in der Chrome Web Store-URL Ihrer App und im Chrome Web Store-Entwickler-Dashboard.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
Desktopanwendung
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Desktop-App.
- Geben Sie im Feld Name einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
Fernseher und Geräte mit begrenzter Eingabe
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Fernseher und Geräte mit eingeschränkter Eingabe.
- Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
Universal Windows Platform (UWP)
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Universelle Windows-Plattform (UWP).
- Geben Sie im Feld „Name“ einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Geben Sie im Feld „Shop-ID“ die eindeutige 12‑stellige Microsoft Store-ID Ihrer App ein. Sie finden diese ID in der Microsoft Store-URL Ihrer App und im Partner Center.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
JSON-Datei mit dem Clientgeheimnis herunterladen
Die Clientschlüsseldatei ist eine JSON-Darstellung der OAuth-Client-ID-Anmeldedaten, auf die Ihre Chat-App beim Bereitstellen von Anmeldedaten verweisen kann.
Rufen Sie in der Google Cloud Console das Menü > APIs und Dienste > Anmeldedaten auf.
Klicken Sie unter OAuth 2.0-Client-IDs auf die von Ihnen erstellte Client-ID.
Klicken Sie auf JSON herunterladen.
Speichern Sie die Datei als
credentials.json
.
Schritt 3: Google-Clientbibliothek und andere Abhängigkeiten installieren
Installieren Sie die Google-Clientbibliothek und andere für das Projekt erforderliche Abhängigkeiten.
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
Wenn Sie die Google-Clientbibliotheken und andere erforderliche Abhängigkeiten zu Ihrem Node.js-Projekt hinzufügen möchten, wechseln Sie in das Verzeichnis Ihres Projekts und führen Sie den folgenden Befehl in der Befehlszeile aus:
npm install "@googleapis/chat" open server-destroy
Apps Script
In diesem Beispiel wird der Advanced Chat-Dienst verwendet, um die Google Chat API aufzurufen. So aktivieren Sie den Dienst für Ihr Apps Script-Projekt:
- Klicke links auf Editor .
- Klicken Sie links neben Dienste auf Dienst hinzufügen .
- Wählen Sie Google Chat API aus.
- Wählen Sie unter Version die Option v1 aus.
- Klicken Sie auf Hinzufügen.
Sie können jede Sprache verwenden, die von unseren Clientbibliotheken unterstützt wird.
Schritt 4: Skript zum Aufrufen der Chat API schreiben
Das Aufrufen einer API mit OAuth-Autorisierung ist ein mehrstufiger Prozess. In Web- oder Desktopanwendungen läuft der Prozess in der Regel so ab:
- Die App leitet den Nutzer zu einer Autorisierungsseite weiter, auf der der Zugriff auf Nutzerdaten angefordert wird, die durch Autorisierungsbereiche angegeben werden. Die App identifiziert sich mit Client-ID-Anmeldedaten.
- Der Nutzer prüft die von der App angeforderten Berechtigungen und genehmigt die Anfrage.
- Der Authentifizierungsserver von Google leitet den Browser zusammen mit einem Autorisierungscode zum HTTP-Endpunkt der App weiter.
- Die Anwendung sendet eine weitere Anfrage an den Autorisierungsserver von Google, um den Autorisierungscode gegen ein Zugriffstoken einzutauschen.
- Die Anwendung verwendet das Zugriffstoken, um die API im Namen des Nutzers aufzurufen.
Weitere Informationen zum OAuth-Autorisierungsprozess finden Sie im Leitfaden zum Zugriff auf Google APIs über OAuth 2.0.
In den folgenden Codebeispielen in Java, Python und Node.js wird eine Clientbibliothek verwendet, um den OAuth-Autorisierungsablauf auszuführen. Es wird ein lokaler HTTP-Server geöffnet, um den Autorisierungscode vom Autorisierungsserver zurück zu erhalten. Dieser wird dann gegen ein Zugriffstoken eingetauscht. Im Apps Script-Codebeispiel wird dieser Autorisierungsablauf von Apps Script verarbeitet.
Nach Abschluss des Authentifizierungsvorgangs authentifiziert sich das Skript mit der Chat API über das Zugriffstoken des Nutzers und erstellt dann einen Gruppenbereich.
Java
- Öffnen Sie im Verzeichnis Ihres Projekts die Datei
src/main/java/com/google/chat/app/authsample/App.java
. Ersetzen Sie den Inhalt von
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 = "/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(); } }
Erstellen Sie im Verzeichnis Ihres Projekts ein neues Unterverzeichnis mit dem Namen
resources
.Kopieren Sie die Datei
credentials.json
in das Unterverzeichnisresources
.Wenn Sie Maven so konfigurieren möchten, dass die Datei mit den Clientgeheimnissen in das Projektpaket aufgenommen wird, bearbeiten Sie die Datei
pom.xml
im Verzeichnis Ihres Projekts und fügen Sie dem Abschnitt<build>
die folgende Konfiguration hinzu:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
Wenn Sie Maven so konfigurieren möchten, dass die Abhängigkeiten im Projektpaket enthalten sind und die Hauptklasse Ihrer Anwendung ausgeführt wird, bearbeiten Sie die Datei
pom.xml
im Verzeichnis Ihres Projekts und fügen Sie dem Abschnitt<plugins>
die folgende Konfiguration hinzu:<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
Speichern Sie den folgenden Code in einer Datei mit dem Namen
chat_space_create_named.py
im selben Verzeichnis, in dem sichcredentials.json
befindet: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
Speichern Sie den folgenden Code in einer Datei mit dem Namen
chat_space_create_named.js
in demselben Verzeichnis, in dem sich das Node.js-Projekt undcredentials.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('./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);
Apps Script
Bearbeiten Sie im Apps Script-Editor die Datei
appsscript.json
und fügen Sie den OAuth-Bereich hinzu, der zum Aufrufen der API erforderlich ist:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]
Speichern Sie den folgenden Code in einer Datei mit dem Namen
ChatSpaceCreateNamed.gs
in Ihrem Apps Script-Projekt:/** * 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, wechseln Sie in der Befehlszeile zu dem Verzeichnis, das Ihre Projektdateien enthält, und führen Sie 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:
Nach der Anmeldung wird der OAuth-Zustimmungsbildschirm angezeigt, auf dem Sie aufgefordert werden, der App die Berechtigung zu erteilen.
Nachdem Sie die Berechtigung erteilt haben, ruft das Script die Chat API auf. Diese antwortet, indem sie den Chat-Bereich mit dem Anzeigenamen API-made
erstellt. In der Konsole werden Details des API-Aufrufs ausgegeben. Rufen Sie den Bereich „Gruppenbereiche“ in Google Chat auf, um den Gruppenbereich zu finden.
Fehlerbehebung beim Beispiel
Wenn Sie chat_space_create_named.py
ausführen, erhalten Sie möglicherweise eine Fehlermeldung mit folgendem Inhalt:
Expected a JSON object with a single property for a "web" or "installed" application
Diese Fehlermeldung bedeutet, dass die credentials.json
-Datei, die Sie aus der Google Cloud Console heruntergeladen haben, nicht mit der Property "web"
oder "installed"
beginnt. Wenn Ihr Code nach der Authentifizierung mit der heruntergeladenen Datei das Zugriffstoken nicht in einer neuen Datei wie token.json
speichert, wird das Zugriffstoken in credentials.json
geschrieben. Dies kann bei nachfolgenden Autorisierungsversuchen zu diesem Fehler führen.
Laden Sie die Datei mit dem Client-Secret noch einmal aus der Google Cloud Console herunter und speichern Sie die neue Datei an der Stelle der aktuellen Datei.
Weitere Informationen
Wenn Ihre Anwendung die Nutzer-Tokens 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 Nutzer-Tokens sicher verwalten und den Widerruf und Ablauf von Aktualisierungstokens berücksichtigen. Weitere Informationen finden Sie im Leitfaden zu Best Practices für die Verwendung von OAuth 2.0 und im App-Beispiel zur Nutzerautorisierung:
- Java-Beispielanwendung für die Nutzerautorisierung
- Python-Beispiel-App für die Nutzerautorisierung
- Node.js-Beispiel-App für die Nutzerautorisierung
- Bei der Apps Script-Integration in Google Chat werden Nutzer-Tokens automatisch verarbeitet. Weitere Informationen finden Sie unter Advanced Chat-Dienst.
Wenn Sie die erforderlichen OAuth-Bereiche der Datei
appsscript.json
für eine interaktive Chat-App hinzufügen, werden Nutzer-Tokens durch die Apps Script-Integration automatisch sicher und transparent gespeichert und beim nächsten Aufruf der Chat API für denselben Nutzer wiederverwendet.
Weitere Informationen zu den Funktionen der Chat API finden Sie in der Chat API-Referenzdokumentation.