Nutzer authentifizieren und autorisieren

In diesem Leitfaden wird erläutert, wie Sie OAuth 2.0 mit Google-Anmeldedaten von Nutzern verwenden, um auf die Chat API zuzugreifen. Durch die Authentifizierung und Autorisierung mit Anmeldedaten von Nutzern können Chat-Apps im Namen des authentifizierten Nutzers auf Nutzerdaten zugreifen und Vorgänge ausführen. Durch die Authentifizierung im Namen eines Nutzers hat die App dieselben Berechtigungen wie dieser Nutzer und kann Aktionen ausführen, als ob er es von diesem Nutzer getan hätte. Diese Chat-Apps können jedoch nicht veröffentlicht werden. Weitere Informationen finden Sie unter Google Chat-Apps veröffentlichen.

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

Wenn eine Anwendung eine Aktion mit Nutzerauthentifizierung ausführt (z. B. einen Gruppenbereich erstellt), wird in Google Chat eine Attributionsnachricht angezeigt, die den Namen der Anwendung angibt, die die Aktion für den Nutzer ausgeführt hat, der sie autorisiert hat.

Weitere Informationen dazu, wann Chat-Apps eine Authentifizierung erfordern und welche Art von Authentifizierung verwendet werden muss, finden Sie unter Authentifizierungstypen.

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, kann das Dienstkonto die Identität eines Nutzerkontos ü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.

Damit Sie mit der Google Chat API auf Ressourcen einer Google Workspace-Organisation zugreifen oder diese ändern können, muss der Nutzer Mitglied dieser Organisation sein. Externe Nutzer oder Nutzer ohne Google Workspace-Konto mit Zugriff auf Google Chat werden nicht unterstützt.

Voraussetzungen

Python

Schritt 1: Google-Clientbibliothek installieren

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

Python

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

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

Schritt 2: 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 App konfigurieren, wird festgelegt, was Google Nutzern und App-Prüfern angezeigt wird, und Ihre App wird 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 die Bereiche für Anwendungen auflisten, die von Personen außerhalb Ihrer Google Workspace-Organisation verwendet werden.

  1. Gehen Sie in der Google Cloud Console zu „Menü“ > APIs und Dienste > OAuth-Zustimmungsbildschirm.

    Zum OAuth-Zustimmungsbildschirm

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

  3. Füllen Sie das Formular zur App-Registrierung aus und klicken Sie auf Speichern und fortfahren.

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

  5. Sehen Sie sich die Zusammenfassung Ihrer App-Registrierung an. Klicken Sie auf Bearbeiten, um Änderungen vorzunehmen, oder klicken Sie auf Zurück zum Dashboard.

Schritt 3: Anmeldedaten für OAuth-Client-ID 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. Mit einer Client-ID kann eine einzelne Anwendung den OAuth-Servern von Google zugeordnet werden. Wenn Ihre App auf mehreren Plattformen ausgeführt wird, z. B. Android, iOS und Web, müssen Sie für jede Plattform eine separate Client-ID erstellen.

OAuth-Client-ID erstellen

Wählen Sie Ihren Anwendungstyp aus, um eine spezifische Anleitung zum Erstellen einer OAuth-Client-ID zu erhalten:

Webanwendung

  1. Gehen Sie in der Google Cloud Console zu „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 autorisierte URIs für Ihre App 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. Damit 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. Gehen Sie in der Google Cloud Console zu „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 das Ausweisdokument ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie in das Feld „Paketname“ den Paketnamen aus der Datei AndroidManifest.xml ein.
  6. Geben Sie in das Feld „SHA-1-Zertifikatfingerabdruck“ den generierten SHA1-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. Gehen Sie in der Google Cloud Console zu „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 das Ausweisdokument ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie in das Feld „Paket-ID“ die Paket-ID ein, die in der Datei Info.plist der App aufgeführt ist.
  6. Optional: Wenn Ihre App im App Store angezeigt wird, geben Sie die App Store-ID ein.
  7. Optional: Geben Sie in das Feld „Team-ID“ den eindeutigen, aus Apple generierten zehnstelligen String ein, der Ihrem Team zugewiesen wird.
  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. Gehen Sie in der Google Cloud Console zu „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 das Ausweisdokument ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie in das Feld „App-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.
  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. Gehen Sie in der Google Cloud Console zu „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. Gehen Sie in der Google Cloud Console zu „Menü“ > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Fernseher und Geräte mit begrenzter Eingabe.
  4. Geben Sie im Feld „Name“ einen Namen für das Ausweisdokument 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. Gehen Sie in der Google Cloud Console zu „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 das Ausweisdokument ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Geben Sie in das Feld „Store-ID“ den eindeutigen 12-stelligen Microsoft Store-ID-Wert Ihrer App ein. Diese ID finden Sie 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. Gehen Sie in der Google Cloud Console zu „Menü“ > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

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

  3. Klicken Sie auf JSON herunterladen.

  4. Speichern Sie die Datei als client_secrets.json.

Schritt 4: Skript schreiben, das die Chat API aufruft

Im folgenden Code wird eine Clientbibliothek verwendet, um die Chat API aufzurufen. Die Authentifizierung erfolgt mit der Chat API über OAuth-Client-ID-Anmeldedaten und erstellt dann einen Gruppenbereich.

Speichern Sie den folgenden Code in einer Datei namens chat_space_create_named.py im selben Verzeichnis, das auch client_secrets.json enthält:

Python

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 membership.
    print(result)

if __name__ == '__main__':
    main()

Schritt 5: Beispielskript ausführen

Rufen Sie über die Befehlszeile das Verzeichnis mit chat_space_create_named.py und client_secrets.json auf und führen Sie dann den folgenden Befehl aus:

Python

python3 chat_space_create_named.py

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

Anmeldung zum Autorisieren einer Chat-App.

Abbildung 1. OAuth-Zustimmungsbildschirm, auf dem Sie das Konto für die Authentifizierung der App auswählen.

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

Nachdem Sie die Berechtigung erteilt haben, wird vom Skript die Chat API aufgerufen. Diese antwortet, indem die Chat-App einem Chatbereich hinzugefügt wird. Die Konsole gibt Details zum API-Aufruf aus.

Fehler im Beispiel beheben

Beim Ausführen von chat_space_create_named.py wird möglicherweise die folgende Fehlermeldung angezeigt:

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

Diese Fehlermeldung bedeutet, dass die client_secrets.json-Datei, die du aus der Google Cloud Console heruntergeladen hast, nicht mit der Property "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 es in client_secrets.json geschrieben. Dies kann diesen Fehler bei nachfolgenden Autorisierungsversuchen verursachen.

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

Weitere Informationen zur Funktionsweise der Chat API finden Sie in der Chat API-Referenzdokumentation.