Chat-Apps und Google Chat API-Anfragen authentifizieren und autorisieren

Authentifizierung und Autorisierung sind Mechanismen zur Überprüfung der Identität und Zugriff auf Ressourcen. In diesem Dokument wird erläutert, wie Authentifizierung und für Chat-Apps und Chat API-Anfragen.

Prozessübersicht

Das folgende Diagramm zeigt die obersten Schritte der Authentifizierung Autorisierung für Google Chat:

Allgemeine Schritte zur Authentifizierung und Autorisierung in Google Chat
Abbildung 1. Allgemeine Schritte zur Authentifizierung und Autorisierung in Google Chat

  1. Konfigurieren Sie ein Google Cloud-Projekt, aktivieren Sie die Chat API und konfigurieren Sie Ihr Chat-App: Während der Entwicklung erstellen Sie eine Google Cloud-Projekt Im Google Cloud-Projekt aktivieren Sie die Chat API, die Chat-App konfigurieren und die Authentifizierung einrichten. Weitere Informationen finden Sie unter Entwickeln mit Google Workspace und Chat-App erstellen.

  2. Call Chat API:Wenn Ihre App die Methode Chat API senden, werden Anmeldedaten zur Authentifizierung an den Chat API Wenn sich Ihre Anwendung mit einem Dienstkonto authentifiziert, werden die Anmeldedaten Teil Ihres App-Codes sein. Wenn für Ihre App ein Aufruf der Chat API erforderlich ist die noch nicht gewährt wurde, wird der um sich anzumelden.

  3. Ressourcen anfordern: Ihre App bittet um Zugriff mit Bereiche die Sie beim Einrichten der Authentifizierung angeben.

  4. Einwilligung einholen:Wenn Ihre App als Nutzer authentifiziert wird, zeigt Google OAuth-Zustimmungsbildschirm zu erstellen, damit der Nutzer entscheiden kann, ob er Ihrer Anwendung auf die angeforderten Daten zugreifen können. Bei der Authentifizierung mit einem Dienstkonto müssen Sie die Einwilligung der Nutzer einholen.

  5. Genehmigte Ressourcenanfrage senden:Wenn der Nutzer in die werden die Anmeldedaten und die vom Nutzer genehmigten -Bereichen in eine Anfrage. Die Anfrage wird an den Autorisierungsserver von Google gesendet um ein Zugriffstoken zu erhalten.

  6. Google gibt ein Zugriffstoken zurück: Das Zugriffstoken enthält eine Liste mit zugeteilten Bereichen. Wenn die zurückgegebene Liste von Bereichen restriktiver ist als die angeforderte Bereiche deaktiviert, deaktiviert Ihre Anwendung alle durch das Token beschränkten Features.

  7. Zugriff angeforderter Ressourcen:Ihre App verwendet das Zugriffstoken von Google, um Chat API aufrufen und auf Chat API-Ressourcen zugreifen

  8. Aktualisierungstoken abrufen (optional): Wenn Ihre Anwendung auf das Google Chat API über die Lebensdauer eines Zugriffstokens hinaus Aktualisierungstoken. Weitere Informationen finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen

  9. Weitere Ressourcen anfordern:Wenn Ihre App mehr Zugriff benötigt, wird der Nutzer gefragt. um neue Bereiche zu gewähren. Dies führt zu einer neuen Anfrage zum Abrufen eines Zugriffstokens. (Schritte 3–6).

Wann Chat-Apps eine Authentifizierung erfordern

Chat-Apps können Nachrichten als Antwort auf eine Nutzerinteraktion senden. asynchron programmiert. Sie können auch Aufgaben im Namen eines Nutzers ausführen, z. B. zum Erstellen eines Chatbereichs oder zum Abrufen einer Liste von Personen in einem Chatbereich.

Chat-Apps benötigen keine Authentifizierung, um auf eine Interaktion des Nutzers, es sei denn, die Chat-App ruft die Chat API oder eine andere Google API verwenden, während die Verarbeitung einer Antwort.

Um asynchrone Nachrichten zu senden oder Aufgaben im Namen eines Nutzers auszuführen, Chat-Apps senden RESTful-Anfragen an die Chat API die eine Authentifizierung und Autorisierung erfordern.

Für Antworten auf Nutzerinteraktionen ist keine Authentifizierung erforderlich

Für Google Chat-Apps ist keine Authentifizierung als Nutzer oder Chat-App zum synchronen Empfangen und Antworten Interaktionsereignisse.

Google Chat-Apps empfangen Interaktionsereignisse, wenn ein Nutzer interagiert oder ruft eine Chat-App auf, einschließlich der folgenden:

  • Ein Nutzer sendet eine Nachricht an eine Chat-App.
  • Ein Nutzer erwähnt eine Chat-App mit @.
  • Ein Nutzer ruft eine der Slash-Befehlen.

Das folgende Diagramm zeigt eine Anfrage-Antwort-Sequenz zwischen einer Chat-Nutzer und Chat-App:

<ph type="x-smartling-placeholder">
</ph> Für Chat-App-Interaktionsereignisse ist keine Autorisierung erforderlich
Abbildung 2: Für Interaktionsereignisse in Chat-Apps ist keine Authentifizierung erforderlich.

  1. Der Nutzer sendet eine Nachricht an die Chat-App in Google Chat
  2. Google Chat leitet die Nachricht an die App weiter.
  3. Die Anwendung empfängt die Nachricht, verarbeitet sie und gibt eine Antwort an Google Chat
  4. Google Chat rendert die Antwort für den Nutzer oder in einem Gruppenbereich.

Diese Sequenz wiederholt sich für jede Chat-App-Interaktion .

Für asynchrone Nachrichten ist eine Authentifizierung erforderlich

Asynchrone Nachrichten treten auf, wenn eine Chat-App eine an den Chat API was eine Authentifizierung und Autorisierung erfordert.

Durch Aufrufen der Chat API können Chat-Apps Nachrichten posten an Google Chat senden oder im Namen eines Nutzers Aufgaben erledigen und auf Daten zugreifen. Für Beispielsweise kann eine Chat-App nach einem Serverausfall die Chat API an:

  • Erstellen Sie einen Chatbereich für die Untersuchung und Behebung des Ausfall.
  • Fügen Sie dem Chatbereich Personen hinzu.
  • Posten Sie eine Nachricht im Chatbereich mit Details zur Ausfall.

Das folgende Diagramm zeigt eine asynchrone Nachrichtensequenz zwischen einem Chat-App und ein Chatbereich:

Authentifizierung für asynchrone Nachrichten erforderlich
Abbildung 3. Für asynchrone Nachrichten ist eine Authentifizierung erforderlich.

  1. Eine Chat-App erstellt eine Nachricht, indem sie die Chat API mit dem spaces.messages.create und enthält Nutzeranmeldedaten in der HTTP-Anfrage.
  2. Google Chat authentifiziert die Chat-App mit Dienstkonto- oder Nutzeranmeldedaten.
  3. Google Chat rendert die Nachricht der App in einem bestimmten Chat Leerzeichen.

Chat API-Bereiche

OAuth-Zustimmungsbildschirm konfigurieren und Bereiche auswählen definieren, welche Informationen Nutzern und App-Prüfern angezeigt werden, und registrieren um sie später veröffentlichen zu können.

Um die Zugriffsebene für Ihre App festzulegen, müssen Sie Autorisierungsbereiche deklarieren Ein Autorisierungsbereich ist ein OAuth 2.0-URI String, der den Namen der Google Workspace App und die Art der Daten enthält, Zugriffsebenen und der Zugriffsebene.

Nicht vertrauliche Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.bot

Der Bereich chat.bot unterstützt nur Dienstkonten. Ich kann sich nicht mit Nutzeranmeldedaten oder mit domainweite Delegierung mit diesem Bereich.

Ermöglicht Chat-Apps, Chats anzusehen und Nachrichten zu senden. Gibt Zugriff auf alle Funktionen, die in Chat-Apps verfügbar sind.

Sensible Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.spaces Unterhaltungen und Gruppenbereiche erstellen und Metadaten abrufen oder bearbeiten (einschließlich Verlaufs- und Zugriffseinstellungen) in Google Chat.
https://www.googleapis.com/auth/chat.spaces.create Sie können neue Unterhaltungen in Google Chat erstellen.
https://www.googleapis.com/auth/chat.spaces.readonly Chats und Gruppenbereiche in Google Chat ansehen.
https://www.googleapis.com/auth/chat.memberships Mitglieder in Google Chat-Unterhaltungen aufrufen, hinzufügen, aktualisieren und entfernen.
https://www.googleapis.com/auth/chat.memberships.app Sich selbst zu Google Chat-Unterhaltungen hinzufügen oder daraus entfernen.
https://www.googleapis.com/auth/chat.memberships.readonly Mitglieder in Google Chat-Unterhaltungen ansehen.
https://www.googleapis.com/auth/chat.messages.create Nachrichten in Google Chat schreiben und senden.
https://www.googleapis.com/auth/chat.messages.reactions Reaktionen auf Nachrichten in Google Chat ansehen, hinzufügen und löschen.
https://www.googleapis.com/auth/chat.messages.reactions.create Reaktionen auf eine Nachricht in Google Chat hinzufügen.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Reaktionen auf eine Nachricht in Google Chat ansehen.
https://www.googleapis.com/auth/chat.users.readstate „Zuletzt gelesen“-Zeit für Chat-Unterhaltungen ansehen und ändern.
https://www.googleapis.com/auth/chat.users.readstate.readonly „Zuletzt gelesen“-Zeit für Chat-Unterhaltungen anzeigen.
https://www.googleapis.com/auth/chat.admin.spaces.readonly In Google Chat können Sie Chats und Gruppenbereiche aufrufen, die der Domain des Administrators gehören.
https://www.googleapis.com/auth/chat.admin.spaces In Google Chat können Sie Chats und Gruppenbereiche, die der Domain des Administrators gehören, ansehen oder bearbeiten.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Mitglieder und Manager von Unterhaltungen, die zur Domain des Administrators gehören, in Google Chat ansehen.
https://www.googleapis.com/auth/chat.admin.memberships Mitglieder und Manager in Unterhaltungen, die der Domain des Administrators gehören, in Google Chat ansehen, hinzufügen, aktualisieren und entfernen.

Eingeschränkte Bereiche

Bereichscode Beschreibung
https://www.googleapis.com/auth/chat.delete Unterhaltungen und Gruppenbereiche löschen sowie den Zugriff auf verknüpfte Dateien entfernen in Google Chat.
https://www.googleapis.com/auth/chat.import Gruppenbereiche, Nachrichten und Mitgliedschaften in Google Chat importieren. Für finden Sie unter Chat-Apps zum Importieren von Daten autorisieren
https://www.googleapis.com/auth/chat.messages Nachrichten lesen, verfassen, senden, aktualisieren und löschen sowie hinzufügen, ansehen und Reaktionen auf Nachrichten löschen.
https://www.googleapis.com/auth/chat.messages.readonly Nachrichten und Reaktionen in Google Chat ansehen.
https://www.googleapis.com/auth/chat.admin.delete Unterhaltungen und Gruppenbereiche der Domain des Administrators löschen sowie den Zugriff auf verknüpfte Dateien entfernen in Google Chat.

Die Bereiche in den vorherigen Tabellen geben ihre Vertraulichkeit gemäß den folgenden Definitionen:

Wenn Ihre Anwendung Zugriff auf andere Google APIs benötigt, können Sie diese Bereiche hinzufügen. . Weitere Informationen zu den Google API-Bereichen finden Sie unter OAuth 2.0 für Folgendes verwenden: Auf Google APIs zugreifen

Weitere Informationen zu Bereichen für Google Workspace APIs finden Sie unter Konfigurieren Sie den OAuth-Zustimmungsbildschirm und wählen Sie Bereiche aus.

Erforderliche Authentifizierungstypen

Chat-Apps haben zwei Möglichkeiten, sich mit die Chat API: Nutzeranmeldedaten oder Dienstkonten.

Mit der Autorisierung von Nutzeranmeldedaten kann eine Chat-App Auf Nutzerdaten zugreifen und Aktionen im Namen eines Nutzers ausführen OAuth-Bereiche geben die autorisierten Daten und Aktionen an.

Mit der App-Autorisierung greift eine Chat-App auf die API als Anwendung mit Dienstkonto-Anmeldedaten verwenden. App-Autorisierung immer verwendet den Autorisierungsbereich chat.bot.

Bei der Entscheidung, welche Art von Anmeldedaten für eine bestimmte API-Anfrage verwendet werden soll, Beachten Sie, dass einige API-Methoden nur eine bestimmte Art von Anmeldedaten Wenn eine API-Methode beide Anmeldedaten unterstützt, wird der Typ der Anmeldedaten die im Aufruf verwendet wird, wirkt sich auf das zurückgegebene Ergebnis aus:

  • Bei der App-Autorisierung geben die Methoden nur Ressourcen zurück, die die app verwenden kann Zugriff haben.
  • Mit der Nutzerautorisierung geben die Methoden nur Ressourcen zurück, die vom user auf die Sie über die Chat-UI zugreifen können.

Wenn Sie beispielsweise die Methode ListSpaces mit App-Autorisierung aufrufen, wird das Ereignis Liste der Gruppenbereiche, in denen die App Mitglied ist. ListSpaces mit dem Nutzer aufrufen Autorisierung gibt die Liste der Gruppenbereiche zurück, in denen der Nutzer Mitglied ist. In verwendet, kann Ihre App beim Aufrufen der Methode Chat API, je nach gewünschter Funktionalität.

Für asynchrone Chat API-Aufrufe

In der folgenden Tabelle sind die Chat API-Methoden und die unterstützten Methoden aufgeführt. Autorisierungsbereiche:

Methode Nutzerauthentifizierung wird unterstützt App-Authentifizierung wird unterstützt Unterstützte Autorisierungsbereiche
Gruppenbereiche  
Gruppenbereich erstellen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.create
  • chat.spaces
  • chat.import
Gruppenbereich einrichten Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.create
  • chat.spaces
Gruppenbereich anfordern Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.spaces.readonly
Gruppenbereiche auflisten Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
In Gruppenbereichen suchen Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.spaces.readonly
Gruppenbereiche aktualisieren Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces
  • chat.import
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.spaces
Gruppenbereiche löschen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.delete
  • chat.import
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.delete
Import für einen Gruppenbereich abschließen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.import
Direktnachrichten suchen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.spaces.readonly
  • chat.spaces
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Mitglieder  
Mitglied erstellen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships
  • chat.memberships.app
  • chat.import
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships
Mitglied werden Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships.readonly
  • chat.memberships
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships.readonly
Listenmitglieder Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships.readonly
Mitglied löschen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships
  • chat.memberships.app
  • chat.import
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships
Mitglieder aktualisieren Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.memberships
  • chat.import
Mit der Nutzerauthentifizierung mit Administratorberechtigungen: <ph type="x-smartling-placeholder">
    </ph>
  • chat.admin.memberships
Nachrichten  
Nachricht erstellen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.create
  • chat.messages
  • chat.import
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Nachricht erhalten Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.readonly
  • chat.messages
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Nachrichten auflisten Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.readonly
  • chat.messages
  • chat.import
Nachrichten aktualisieren Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages
  • chat.import
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Nachrichten löschen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages
  • chat.import
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Reaktionen  
Reaktion erstellen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Reaktionen auflisten Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Reaktionen löschen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.reactions
  • chat.messages
  • chat.import
Medien- und Anhänge  
Medien als Dateianhang hochladen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.create
  • chat.messages
  • chat.import
Medien herunterladen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.messages.readonly
  • chat.messages
Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Nachrichtenanhang abrufen Mit der App-Authentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.bot
Lesestatus des Nutzers
Lesestatus des Gruppenbereichs eines Nutzers abrufen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.users.readstate
  • chat.users.readstate.readonly
Lesestatus des Gruppenbereichs eines Nutzers aktualisieren Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.users.readstate
Thread-Lesestatus eines Nutzers abrufen Mit der Nutzerauthentifizierung: <ph type="x-smartling-placeholder">
    </ph>
  • chat.users.readstate
  • chat.users.readstate.readonly
Veranstaltungen im Weltraum
<ph type="x-smartling-placeholder"></ph> Weltraum-Events abrufen Bei der Nutzerauthentifizierung müssen Sie einen Bereich verwenden, der auf dem <ph type="x-smartling-placeholder"></ph> Ereignistyp: <ph type="x-smartling-placeholder">
    </ph>
  • Für Ereignisse zu Nachrichten:
    • chat.messages
    • chat.messages.readonly
  • Ereignisse zu Reaktionen:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • Für Veranstaltungen zur Kanalmitgliedschaft:
    • chat.memberships
    • chat.memberships.readonly
  • Für Veranstaltungen zum Gruppenbereich:
    • chat.spaces
    • chat.spaces.readonly
<ph type="x-smartling-placeholder"></ph> Weltraumereignisse auflisten Bei der Nutzerauthentifizierung müssen Sie für jede <ph type="x-smartling-placeholder"></ph> Ereignistyp in der Anfrage: <ph type="x-smartling-placeholder">
    </ph>
  • Für Ereignisse zu Nachrichten:
    • chat.messages
    • chat.messages.readonly
  • Ereignisse zu Reaktionen:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • Für Veranstaltungen zur Kanalmitgliedschaft:
    • chat.memberships
    • chat.memberships.readonly
  • Für Veranstaltungen zum Gruppenbereich:
    • chat.spaces
    • chat.spaces.readonly

Für Ereignisse in der Chat-App

In der folgenden Tabelle ist aufgeführt, wie Nutzer häufig mit Chat-Apps interagieren und ob eine Authentifizierung erforderlich oder unterstützt wird:

Szenario Keine Authentifizierung erforderlich Nutzerauthentifizierung wird unterstützt App-Authentifizierung wird unterstützt
Nachrichten erhalten von:
Chat-App-Interaktionsereignisse
Apps Script-Callbacks
Cloud Pub/Sub
So antworten Sie auf Nachrichten:
Synchron mithilfe eines Chat-App-Interaktionsereignisses
Gleichzeitig unter Verwendung eines Apps Script-Callback-Rückgabewerts
Neue Nachrichten senden:
Mit eingehenden Webhooks