Als Chat-App authentifizieren

In diesem Leitfaden 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 erläutert, wie Sie ein Dienstkonto erstellen. Anschließend wird gezeigt, wie Sie ein Skript schreiben, das das Dienstkonto verwendet, um sich bei der Chat API zu authentifizieren und eine Nachricht in einem Chatbereich zu posten.

Chat-Apps können Dienstkonten für die Authentifizierung verwenden, wenn sie die Google Chat REST API asynchron aufrufen, damit sie:

  • Nachrichten mit spaces.messages.create an Google Chat senden an:
    • Nutzer benachrichtigen, wenn ein lang andauernder Hintergrundjob ausgeführt wird.
    • Benachrichtigen Sie Nutzer, dass ein Server offline ist.
    • Bitten Sie einen Kundensupportmitarbeiter, sich um einen neu eröffneten Kundenfall zu kümmern.
  • Aktualisieren Sie zuvor gesendete Nachrichten mit spaces.messages.update zu:
    • Ändern Sie den Status des laufenden Vorgangs.
    • Aktualisieren Sie die zuständige Person oder das Fälligkeitsdatum einer Aufgabe.
  • Listen Sie Nutzer in einem Gruppenbereich mit spaces.members.list auf:
    • Sehen, wer in einem Gruppenbereich ist
    • Prüfen Sie, ob die Mitglieder des Gruppenbereichs alle Mitglieder eines Teams enthalten.

Bei der Authentifizierung mit einem Dienstkonto müssen Chat-Apps eine Mitgliedschaft im Gruppenbereich haben, um Daten zu einem Chatbereich abzurufen oder Aktionen 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 muss, authentifizieren Sie sich stattdessen als Nutzer.

Weitere Informationen dazu, wann Chat-Apps eine Authentifizierung erfordern und welche Authentifizierungsmethoden verwendet werden, finden Sie unter Authentifizierungstypen für die Chat API in der Übersicht.

Voraussetzungen

Sie benötigen die folgenden Voraussetzungen, um das Beispiel in diesem Leitfaden auszuführen:

Python

Schritt 1: Dienstkonto in der Google Cloud Console erstellen

Erstellen Sie ein Dienstkonto, das Ihre Chat-App für den Zugriff auf Google APIs verwendet.

Erstellen Sie ein Dienstkonto:

So erstellen Sie ein Dienstkonto:

  1. Rufen Sie in der Google Cloud Console das Menü > IAM & Verwaltung > Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Klicken Sie auf Dienstkonto erstellen.
  3. Geben Sie die Details zum Dienstkonto ein und klicken Sie dann auf Erstellen und fortfahren.
  4. 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.
  5. Klicken Sie auf Weiter.
  6. Optional: Geben Sie Nutzer oder Gruppen ein, die Aktionen mit diesem Dienstkonto verwalten und ausführen können. Weitere Informationen finden Sie unter Identitätswechsel für Dienstkonten verwalten.
  7. Tippen Sie auf Fertig.

Das Dienstkonto wird auf der Seite des Dienstkontos 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:

  1. Rufen Sie in der Google Cloud Console das Menü > IAM & Verwaltung > Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Wählen Sie Ihr Dienstkonto aus.
  3. Klicken Sie auf Schlüssel > Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  4. Wählen Sie JSON aus und klicken Sie dann auf Erstellen.

    Das neue Paar aus öffentlichem und privatem Schlüssel 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.

  5. Klicken Sie auf Schließen.

Weitere Informationen zu Dienstkonten finden Sie in der Google Cloud IAM-Dokumentation unter Dienstkonten.

Schritt 2: Skript schreiben, das das Dienstkonto zur Authentifizierung mit der Chat REST API verwendet

Der folgende Code authentifiziert sich über ein Dienstkonto bei der Chat REST API und postet dann eine Nachricht in einem Chatbereich:

Python

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen chat_app_auth.py.
  2. 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)
    
  3. Ersetzen Sie im Code SPACE_NAME durch einen Gruppenbereichsnamen, den Sie über die Methode spaces.list in der Chat API oder über die URL eines Gruppenbereichs abrufen können.

Schritt 3: Vollständiges Beispiel ausführen

Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:

Python

python3 chat_app_auth.py

Ihr Skript stellt eine authentifizierte Anfrage an die Chat REST API, die als Antwort eine Nachricht in einem Chatbereich als Chat-App postet.

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

Wenn Sie chat_app_auth.py ausführen, wird möglicherweise 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 im Chatbereich zu posten, in dem sie posten möchte.

Fügen Sie die Chat-App dem in chat_app_auth.py angegebenen Chatbereich hinzu, um den Fehler zu beheben.

Weitere Informationen

Weitere Informationen zu den Funktionen der Chat API finden Sie in der Referenzdokumentation.