In dieser Anleitung 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-Anwendungen auf Nutzerdaten zugreifen und im Namen des authentifizierten Nutzers Vorgänge ausführen. Durch die Authentifizierung im Namen eines Nutzers hat die App dieselben Berechtigungen wie dieser Nutzer und kann Aktionen so ausführen, als ob sie von diesem Nutzer ausgeführt würden.
Nach der Authentifizierung und Autorisierung eines API-Aufrufs mit Nutzeranmeldedaten können Chat-Apps Folgendes tun:
- Chatbereiche erstellen.
- Nutzer zu Chatbereichen und Gruppenunterhaltungen hinzufügen
- Mit Nutzerdaten in anderen Workspace APIs arbeiten, z. B. in den folgenden:
- Erstellen Sie Termine in Google Kalender.
- Protokollelemente in Google Tabellen
- Mit Gmail E-Mails senden
Wenn eine App eine Aktion mit Nutzerauthentifizierung durchführt (z. B. das Erstellen eines Gruppenbereichs), zeigt Google Chat eine Attributionsnachricht an, in der der Name der App genannt wird, die die Aktion für den autorisierten Nutzer ausgeführt hat.

Weitere Informationen dazu, wann Chatanwendungen eine Authentifizierung erfordern und welche Art von Authentifizierung verwendet werden soll, finden Sie unter Erforderliche Authentifizierungstypen in der Übersicht über die Authentifizierung und Autorisierung der Chat API.
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 Zustimmung 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, wird bei der domainweiten Delegierung die Identität eines Nutzers übernommen und dies gilt daher als Nutzerauthentifizierung. Für jede Funktion, für die eine Nutzerauthentifizierung erforderlich ist, können Sie die domainweite Delegierung verwenden.
Voraussetzungen
Zum Ausführen des Beispiels in dieser Anleitung müssen die folgenden Voraussetzungen erfüllt sein:
- Ein Google Workspace-Konto mit Zugriff auf Google Chat.
- Ein Google Cloud-Projekt, in dem die Chat API aktiviert und konfiguriert ist. Informationen zum Erstellen eines Projekts und zum Aktivieren einer API finden Sie unter Projekt erstellen und API aktivieren.
- Eine Chat-Anwendung, die auf der Chat API-Konfigurationsseite in der Google Cloud Console konfiguriert wurde. Informationen zum Erstellen und Konfigurieren einer Chat-Anwendung finden Sie unter Google Chat-Anwendung mit Cloud Functions erstellen.
Außerdem müssen die folgenden sprachspezifischen Voraussetzungen erfüllt sein:
Java
- JDK 1.7 oder höher
- Paketverwaltungstool von 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
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Node.js
Apps Script
- Ein Apps Script-Projekt, das mit Ihrem Google Cloud-Projekt verbunden ist. Informationen zum Initialisieren eines Apps Script-Projekts finden Sie unter Google Apps Script Chat App – Kurzanleitung.
Schritt 1: OAuth-Zustimmungsbildschirm konfigurieren, Bereiche angeben und App registrieren
Wenn Sie OAuth 2.0 für die Autorisierung verwenden, zeigt Google dem Nutzer einen Zustimmungsbildschirm an, der eine Zusammenfassung Ihres Projekts, dessen Richtlinien und die angeforderten Autorisierungsbereiche enthält. Wenn Sie den OAuth-Zustimmungsbildschirm Ihrer Anwendung konfigurieren, wird definiert, was Google Nutzern und Prüfern anzeigt. Außerdem wird Ihre Anwendung registriert, damit Sie sie später veröffentlichen können.
Für alle Anwendungen, die OAuth 2.0 verwenden, ist ein Zustimmungsbildschirm erforderlich. Sie müssen jedoch nur Bereiche für Anwendungen auflisten, die von Personen außerhalb Ihrer Google Workspace-Organisation verwendet werden.
Klicken Sie in der Google Cloud Console auf das Dreistrich-Menü > APIs und Dienste > OAuth-Zustimmungsbildschirm.
Wählen Sie den Nutzertyp für Ihre Anwendung aus und klicken Sie auf Erstellen.
Füllen Sie das App-Registrierungsformular aus und klicken Sie dann auf Speichern und fortfahren.
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.
Prüfen Sie die Zusammenfassung der App-Registrierung. 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
Damit Sie sich als Endnutzer authentifizieren und auf Nutzerdaten in Ihrer Anwendung zugreifen können, müssen Sie eine oder mehrere OAuth 2.0-Client-IDs erstellen. Eine Client-ID wird verwendet, um eine einzelne Anwendung bei den OAuth-Servern von Google zu identifizieren. Wenn Ihre App auf mehreren Plattformen wie Android, iOS und Web ausgeführt wird, müssen Sie für jede Plattform eine separate Client-ID erstellen.
Anmeldedaten für OAuth-Client-ID erstellen
Wählen Sie Ihren Anwendungstyp aus, um eine genaue Anleitung zum Erstellen einer OAuth-Client-ID zu erhalten:
Webanwendung
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- 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 für Ihre Anwendung 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. Dadurch werden die Domains identifiziert, von denen Ihre Anwendung API-Anfragen an den OAuth 2.0-Server senden kann.
- Serverseitige Anwendungen (z. B. Java, Python): 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. 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.
- Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter OAuth 2.0-Client-IDs angezeigt.
Android
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- Klicken Sie auf App-Typ > 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 der
AndroidManifest.xml
-Datei ein. - Geben Sie im Feld „SHA-1-Zertifikat-Fingerabdruck“ den generierten SHA-1-Zertifikat-Fingerabdruck ein.
- Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID angezeigt.
- Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter "OAuth 2.0-Client-IDs" angezeigt.
iOS
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- Klicken Sie auf 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, die in der Datei
Info.plist
der App aufgeführt ist. - Optional: Wenn Ihre App im App Store angezeigt wird, geben Sie die App Store-ID ein.
- Optional: Geben Sie in das Feld „Team-ID“ den eindeutigen zehnstelligen String ein, der von Apple generiert und Ihrem Team zugewiesen wurde.
- Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
- Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter "OAuth 2.0-Client-IDs" angezeigt.
Chrome App
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- Klicken Sie auf Anwendungstyp > Chrome App.
- 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 „Anwendungs-ID“ den eindeutigen 32-stelligen ID-String 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. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
- Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter "OAuth 2.0-Client-IDs" angezeigt.
Desktopanwendung
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- 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. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
- Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter OAuth 2.0-Client-IDs angezeigt.
Fernseher und Geräte mit begrenzter Eingabe
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- Klicken Sie auf App-Typ > Fernseher und Geräte mit begrenzter 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. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
- Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter "OAuth 2.0-Client-IDs" angezeigt.
Universal Windows Platform (UWP)
- Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
- Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
- 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 „Store-ID“ die eindeutige, 12-stellige Microsoft Store-ID Ihrer App ein. Sie finden diese ID in der Microsoft Store-URL Ihrer App und im Partnercenter.
- Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
- 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-Anwendung bei der Bereitstellung von Anmeldedaten verweisen kann.
Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.
Klicken Sie unter OAuth 2.0-Client-IDs auf die Client-ID, die Sie erstellt haben.
Klicken Sie auf JSON herunterladen.
Speichern Sie die Datei als
client_secrets.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-httplib2 google-auth-oauthlib oauth2client
Node.js
Wenn Sie Ihrem Node.js-Projekt die Google-Clientbibliotheken und andere erforderliche Abhängigkeiten hinzufügen möchten, wechseln Sie in das Projektverzeichnis und führen Sie in der Befehlszeile den folgenden Befehl aus:
npm install "@googleapis/chat" open server-destroy
Apps Script
Zum Ausführen dieses Beispiels in Apps Script sind keine zusätzlichen Bibliotheken erforderlich.
Sie können jede von unseren Clientbibliotheken unterstützte Sprache verwenden.
Schritt 4: Skript schreiben, das die Chat API aufruft
Das Aufrufen einer API mit OAuth-Autorisierung erfolgt in mehreren Schritten. In Web- oder Desktopanwendungen läuft der Prozess normalerweise so ab:
- Die Anwendung leitet den Nutzer auf eine Autorisierungsseite weiter, auf der er Zugriff auf die in Autorisierungsbereiche angegebenen Nutzerdaten angefordert hat. Die Anwendung 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 Anwendung weiter.
- Die Anwendung sendet eine weitere Anfrage an den Autorisierungsserver von Google, um den Autorisierungscode gegen ein Zugriffstoken auszutauschen.
- Die Anwendung verwendet das Zugriffstoken, um die API im Namen des Nutzers aufzurufen.
Weitere Informationen zum OAuth-Autorisierungsprozess finden Sie im Leitfaden zur Verwendung von OAuth 2.0 für den Zugriff auf Google APIs.
In den folgenden Codebeispielen in Java, Python und Node.js wird eine Clientbibliothek zum Ausführen des OAuth-Autorisierungsablaufs verwendet. Es öffnet einen lokalen HTTP-Server, um den Autorisierungscode vom Autorisierungsserver zurückzuerhalten, den es dann gegen ein Zugriffstoken tauscht.
Im Apps Script-Codebeispiel wird dieser Autorisierungsvorgang bereits von Apps Script durchgeführt. Die Anwendung kann also einfach ScriptApp.getOAuthToken()
verwenden, um das Zugriffstoken des Nutzers abzurufen.
Nach Abschluss der Authentifizierung authentifiziert sich das Skript mit dem Zugriffstoken des Nutzers bei der Chat API und erstellt dann einen Bereich.
Java
- Öffnen Sie im Verzeichnis Ihres Projekts die Datei
src/main/java/com/google/chat/app/authsample/App.java
. 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(); } }
Erstellen Sie im Verzeichnis Ihres Projekts ein neues Unterverzeichnis mit dem Namen
resources
.Kopieren Sie die Datei
client_secrets.json
in das Unterverzeichnisresources
.Wenn Sie Maven so konfigurieren möchten, 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 im 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 in das Projektpaket aufgenommen werden 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
Speichern Sie den folgenden Code in einer Datei mit dem Namen
chat_space_create_named.py
im selben Verzeichnis, das auchclient_secrets.json
enthält:from __future__ import print_function import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # 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
Speichern Sie den folgenden Code in einer Datei mit dem Namen
chat_space_create_named.js
im selben Verzeichnis, in dem sich auch das Node.js-Projekt undclient_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
Bearbeiten Sie im Apps Script-Editor die Datei
appsscript.json
und fügen Sie die OAuth-Bereiche hinzu, die zum Aufrufen der API erforderlich sind:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create", "https://www.googleapis.com/auth/script.external_request" ]
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() { // Call the Chat API to create a space. const result = UrlFetchApp.fetch('https://chat.googleapis.com/v1/spaces', { method: 'post', contentType: 'application/json', // Authenticate with the credentials of the user running the script. headers: { 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() }, // Details about the space to create. payload: JSON.stringify({ // To create a named space, set spaceType to SPACE. 'spaceType': 'SPACE', // The user-visible name of the space. 'displayName': 'API-made' }) }); // Log details about the created space. console.log(result.getContentText()); }
Schritt 5: Beispielskript ausführen
Wenn Sie das Beispiel über die Befehlszeile ausführen möchten, rufen Sie das Verzeichnis auf, 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 und Sie werden aufgefordert, der App 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 des API-Aufrufs aus. Rufen Sie in Google Chat den Bereich Gruppenbereiche auf.
Fehler im Beispiel beheben
Beim Ausführen von chat_space_create_named.py
wird möglicherweise folgende Fehlermeldung angezeigt:
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 nach der Authentifizierung mit der heruntergeladenen Datei das Zugriffstoken nicht in einer neuen Datei wie token.json
speichert, wird das Zugriffstoken in client_secrets.json
geschrieben, was diesen Fehler bei nachfolgenden Autorisierungsversuchen verursachen kann.
Laden Sie die Clientschlüsseldatei noch einmal aus der Google Cloud Console herunter und speichern Sie die neue Datei am Speicherort der aktuellen Datei, um den Fehler zu beheben.
Weitere Informationen
Wenn Ihre Anwendung die Nutzertokens außerhalb des Bereichs eines einzelnen Ablaufs weiter 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 den Ablauf von Aktualisierungstokens verarbeiten. Weitere Informationen finden Sie unter Best Practices für OAuth 2.0 verwenden.
Weitere Informationen zu den Funktionen der Chat API finden Sie in der Referenzdokumentation zur Chat API.