In dieser Anleitung wird erläutert, wie Sie ein Dienstkonto einrichten und verwenden, um im Namen einer Chat-App auf die Google Chat REST API zuzugreifen. Zuerst wird beschrieben, wie Sie ein Dienstkonto erstellen. Anschließend wird gezeigt, wie Sie ein Skript schreiben, das sich über das Dienstkonto bei der Chat API authentifiziert und eine Nachricht in einem Chatbereich postet.
Chat-Apps können Dienstkonten für die Authentifizierung der Google Chat REST API verwenden, um Folgendes zu tun:
- Mit
spaces.messages.create
können Sie Nachrichten an Google Chat senden:- Nutzer benachrichtigen, wenn ein lang andauernder Hintergrundjob ausgeführt wird.
- Nutzer darüber informieren, dass ein Server offline ist.
- Bitten Sie einen Kundensupportmitarbeiter, einem neu eröffneten Kundenfall zu folgen.
- Aktualisieren Sie zuvor gesendete Nachrichten mit
spaces.messages.update
so:- Ändern Sie den Status des laufenden Vorgangs.
- Die zuständige Person oder das Fälligkeitsdatum einer Aufgabe aktualisieren.
- Nutzer in einem Gruppenbereich mit
spaces.members.list
auflisten, um:- Sehen, wer in einem Gruppenbereich ist
- Überprüfen Sie, ob alle Mitglieder eines Teams zu einem Gruppenbereich gehören.
Bei der Authentifizierung mit einem Dienstkonto müssen Chat-Apps eine Mitgliedschaft im Gruppenbereich haben, um Daten zu einem Chatbereich zu erhalten oder Aktionen darin auszuführen. Wenn Sie beispielsweise Mitglieder eines Gruppenbereichs auflisten oder eine Nachricht in einem Gruppenbereich erstellen möchten, muss die Chat-App selbst Mitglied des Gruppenbereichs sein.
Wenn Ihre Chat-App auf Nutzerdaten zugreifen oder Aktionen im Namen eines Nutzers ausführen kann, authentifizieren Sie sich stattdessen als Nutzer.
Als Domainadministrator können Sie die domainweite Delegierung von Befugnissen autorisieren, um dem Dienstkonto einer Anwendung Zugriff auf die Daten Ihrer Nutzer zu gewähren, ohne dass jeder Nutzer seine Einwilligung geben muss. Nachdem Sie die domainweite Delegierung konfiguriert haben, können Sie API-Aufrufe über Ihr Dienstkonto ausführen, um die Identität eines Nutzerkontos zu übernehmen. Obwohl ein Dienstkonto für die Authentifizierung verwendet wird, fungiert die domainweite Delegierung als Nutzer. Daher wird dies als Nutzerauthentifizierung betrachtet. Alle Funktionen, die eine Nutzerauthentifizierung erfordern, können die domainweite Delegierung verwenden.
Weitere Informationen dazu, wann Chat-Apps eine Authentifizierung erfordern und welche Art von Authentifizierung verwendet werden muss, finden Sie unter Authentifizierungstypen.
Voraussetzungen
Damit Sie das Beispiel in dieser Anleitung ausführen können, müssen Sie die folgenden Voraussetzungen erfüllen:
Python
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Die Google-Clientbibliotheken für Python. Führen Sie dazu den folgenden Befehl in der Befehlszeile aus:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Ein Google Workspace-Konto mit Zugriff auf Google Chat.
Ein Google Cloud-Projekt mit aktivierter Chat API. Informationen zum Erstellen eines Projekts und zum Aktivieren einer API finden Sie unter Projekt erstellen und API aktivieren.
Eine veröffentlichte Chat-App mit Mitgliedschaft in einem Chatbereich:
- Informationen zum Erstellen und Veröffentlichen einer Chat-App finden Sie unter Google Chat-App mit Cloud Functions erstellen.
- Informationen zum Hinzufügen einer Chat-App zu einem Chatbereich finden Sie unter Apps zu Gruppenbereichen oder Unterhaltungen in Google Chat hinzufügen.
Schritt 1: Dienstkonto in der Google Cloud Console erstellen
Erstellen Sie ein Dienstkonto, über das Ihre Chat-App auf Google APIs zugreift.
Erstellen Sie ein Dienstkonto:
So erstellen Sie ein Dienstkonto:
- Wechseln Sie in der Google Cloud Console zum Menü > IAM und Verwaltung > Dienstkonten.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die Details zum Dienstkonto ein und klicken Sie auf Erstellen und fortfahren.
- Optional: Weisen Sie Ihrem Dienstkonto Rollen zu, um Zugriff auf die Ressourcen Ihres Google Cloud-Projekts zu gewähren. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
- Klicken Sie auf Weiter.
- Optional: Geben Sie Nutzer oder Gruppen ein, die Aktionen mit diesem Dienstkonto verwalten und ausführen dürfen. Weitere Informationen finden Sie unter Identitätswechsel für Dienstkonten verwalten.
- Klicken Sie auf Fertig. Notieren Sie sich die E-Mail-Adresse des Dienstkontos.
Das Dienstkonto wird auf der Seite „Dienstkonto“ angezeigt. Erstellen Sie als Nächstes einen privaten Schlüssel für das Dienstkonto.
Privaten Schlüssel erstellen
So erstellen Sie einen privaten Schlüssel für das Dienstkonto:
- Wechseln Sie in der Google Cloud Console zum Menü > IAM und Verwaltung > Dienstkonten.
- Wählen Sie Ihr Dienstkonto aus.
- Klicken Sie auf Schlüssel > Schlüssel hinzufügen > Neuen Schlüssel erstellen.
- Wählen Sie JSON aus und klicken Sie dann auf Erstellen.
Das neue öffentliche/private Schlüsselpaar wird generiert und als neue Datei auf Ihren Computer heruntergeladen. Diese Datei ist die einzige Kopie dieses Schlüssels. Informationen zum sicheren Speichern von Schlüsseln finden Sie unter Dienstkontoschlüssel verwalten.
- Klicken Sie auf Schließen.
Weitere Informationen zu Dienstkonten finden Sie in der Google Cloud IAM-Dokumentation unter Dienstkonten.
Schritt 2: Skript schreiben, das sich über das Dienstkonto mit der Chat REST API authentifiziert
Der folgende Code authentifiziert sich über ein Dienstkonto bei der Chat REST API und sendet dann eine Nachricht an einen Chatbereich:
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_app_auth.py
. Fügen Sie den folgenden Code in
chat_app_auth.py
ein:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
Ersetzen Sie im Code
SPACE_NAME
durch einen Namen für den Gruppenbereich, den Sie über die Methodespaces.list
in der Chat API oder über die URL eines Gruppenbereichs abrufen können.
Schritt 3: Vollständiges Beispiel ausführen
Erstellen Sie in Ihrem Arbeitsverzeichnis das Beispiel und führen Sie es aus:
Python
python3 chat_app_auth.py
Ihr Skript sendet eine authentifizierte Anfrage an die Chat REST API. Diese antwortet mit der Veröffentlichung einer Nachricht in einem Chatbereich als Chat-App.
Fehler im Beispiel beheben
In diesem Abschnitt werden häufige Probleme beschrieben, die beim Ausführen dieses Beispiels auftreten können.
Du bist nicht berechtigt, diese App zu verwenden
Beim Ausführen von chat_app_auth.py
wird möglicherweise die folgende Fehlermeldung angezeigt:
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
Diese Fehlermeldung bedeutet, dass die Chat-App nicht berechtigt ist, Chatnachrichten in dem Chatbereich zu posten, in dem sie posten möchte.
Fügen Sie die Chat-App dem Chatbereich hinzu, der in chat_app_auth.py
angegeben ist, um den Fehler zu beheben.
Weitere Informationen
Weitere Informationen zu den Funktionen der Chat API finden Sie in der Referenzdokumentation zur Chat API.