Uwierzytelnianie i autoryzowanie aplikacji do obsługi czatu oraz żądań do interfejsu Google Chat API

Uwierzytelnianie i autoryzacja to mechanizmy służące do weryfikowania tożsamości i dostępu do zasobów. Ten dokument wyjaśnia, jak działa uwierzytelnianie i autoryzacja w aplikacjach Google Chat i żądaniach do interfejsu Chat API.

Omówienie procesu

Poniższy diagram przedstawia ogólne kroki uwierzytelniania i autoryzacji w Google Chat:

Ogólne instrukcje uwierzytelniania i autoryzacji w Google Chat
Rysunek 1. Ogólne instrukcje uwierzytelniania i autoryzacji w Google Chat.

  1. Skonfiguruj projekt Google Cloud, włącz interfejs Chat API i skonfiguruj aplikację Google Chat: w trakcie programowania tworzysz projekt Google Cloud. W projekcie Google Cloud włączysz interfejs Chat API, skonfigurujesz aplikację Google Chat i ustawisz uwierzytelnianie. Więcej informacji znajdziesz w artykułach Programowanie w Google Workspace i Tworzenie aplikacji Google Chat.

  2. Wywołaj interfejs Chat API: gdy aplikacja wywołuje interfejs Chat API, wysyła do niego dane uwierzytelniające. Jeśli aplikacja uwierzytelnia się przy użyciu konta usługi, dane uwierzytelniające są wysyłane jako część kodu aplikacji. Jeśli Twoja aplikacja wymaga wywołania interfejsu Chat API przy użyciu uwierzytelniania użytkownika, który nie został jeszcze przyznany, poprosi go o zalogowanie się.

  3. Wysyłanie żądań zasobów: aplikacja prosi o dostęp z wykorzystaniem zakresów określonych podczas konfigurowania uwierzytelniania.

  4. Poproś o zgodę: jeśli Twoja aplikacja uwierzytelnia się jako użytkownik, Google wyświetla ekran zgody OAuth, aby użytkownik mógł zdecydować, czy przyznać jej dostęp do żądanych danych. Uwierzytelnianie za pomocą konta usługi nie wymaga zgody użytkownika.

  5. Wyślij zatwierdzoną prośbę o dostęp do zasobów: jeśli użytkownik wyrazi zgodę na zakresy autoryzacji, aplikacja połączy dane logowania i zatwierdzone przez użytkownika zakresy w żądanie. Żądanie jest wysyłane do serwera autoryzacji Google w celu uzyskania tokena dostępu.

  6. Google zwraca token dostępu: token dostępu zawiera listę przyznanych zakresów. Jeśli zwrócona lista zakresów jest bardziej restrykcyjna niż żądane zakresy, aplikacja wyłączy wszystkie funkcje ograniczone przez token.

  7. Dostęp do żądanych zasobów: aplikacja używa tokena dostępu Google, aby wywoływać interfejs Chat API i uzyskiwać dostęp do zasobów tego interfejsu.

  8. Uzyskaj token odświeżania (opcjonalnie): jeśli aplikacja musi uzyskiwać dostęp do interfejsu Google Chat API po upłynięciu pojedynczego tokena dostępu, może otrzymać token odświeżania. Więcej informacji znajdziesz w artykule o uzyskiwaniu dostępu do interfejsów API Google za pomocą OAuth 2.0.

  9. Poproś o więcej zasobów: jeśli aplikacja potrzebuje większego dostępu, prosi użytkownika o przyznanie nowych zakresów, co powoduje przesłanie nowej prośby o token dostępu (kroki 3–6).

Gdy aplikacje do obsługi czatu wymagają uwierzytelnienia

Aplikacje do obsługi czatu mogą wysyłać wiadomości w odpowiedzi na interakcję użytkownika lub niesynchronicznie. Mogą też wykonywać w imieniu użytkownika zadania takie jak tworzenie pokoju czatu czy pobieranie listy osób w pokoju czatu.

Aplikacje do obsługi czatu nie wymagają uwierzytelniania, aby odpowiedzieć na interakcję użytkownika, chyba że podczas przetwarzania odpowiedzi wywoła ona interfejs Chat API lub inny interfejs API Google.

Aby wysyłać wiadomości asynchroniczne lub wykonywać zadania w imieniu użytkownika, aplikacje do obsługi czatu wysyłają żądania REST do interfejsu Chat API, co wymaga uwierzytelnienia i autoryzacji.

odpowiedzi na interakcje użytkowników nie wymagają uwierzytelniania;

Aplikacje Google Chat nie muszą uwierzytelniać się jako użytkownik lub aplikacja Google Chat, aby otrzymywać zdarzenia interakcji i na nie odpowiadać synchronicznie.

Aplikacje Google Chat odbierają zdarzenia interakcji za każdym razem, gdy użytkownik wchodzi w interakcję z aplikacją lub wywołuje aplikację Google Chat, w tym:

  • Użytkownik wysyła wiadomość do aplikacji Google Chat.
  • Użytkownik dodaje @wzmiankę o aplikacji Google Chat.
  • Użytkownik wywołuje jedno z poleceń ukośnika w aplikacji Google Chat.

Poniższy diagram przedstawia sekwencję żądania i odpowiedzi między użytkownikiem Google Chat a aplikacją Google Chat:

Autoryzacja zdarzeń interakcji z aplikacją Google Chat nie jest wymagana
Rys. 2. Zdarzenia interakcji z aplikacją Google Chat nie wymagają uwierzytelniania.

  1. użytkownik wysyła wiadomość do aplikacji Google Chat w tej usłudze.
  2. Google Chat przekaże wiadomość do aplikacji.
  3. Aplikacja odbiera wiadomość, przetwarza ją i zwraca odpowiedź do Google Chat.
  4. Google Chat renderuje odpowiedź dla użytkownika lub w pokoju.

Ta sekwencja powtarza się w przypadku każdego zdarzenia interakcji z aplikacją Google Chat.

Wiadomości asynchroniczne wymagają uwierzytelniania

Komunikaty asynchroniczne występują, gdy aplikacja do obsługi czatu wysyła żądanie do interfejsu Chat API, który wymaga uwierzytelnienia i autoryzacji.

Po wywołaniu interfejsu Chat API aplikacje Google Chat mogą publikować wiadomości w Google Chat, wykonywać zadania i uzyskiwać dostęp do danych w imieniu użytkownika. Na przykład po wykryciu przerwy w działaniu serwera aplikacja do obsługi czatu może wywołać interfejs Chat API w celu:

  • Utwórz pokój czatu przeznaczony do badania i naprawiania przerwy w działaniu usługi.
  • Dodaj osoby do pokoju czatu.
  • Opublikuj w pokoju czatu wiadomość, aby podać szczegółowe informacje o tej przerwie.

Ten diagram przedstawia asynchroniczną sekwencję wiadomości między aplikacją Google Chat a pokojem czatu:

Wymagane uwierzytelnianie dla wiadomości asynchronicznych
Rysunek 3. Komunikaty asynchroniczne wymagają uwierzytelniania.

  1. Aplikacja do obsługi czatu tworzy wiadomość, wywołując interfejs Chat API za pomocą metody spaces.messages.create i uwzględnia dane logowania użytkownika w żądaniu HTTP.
  2. Google Chat uwierzytelnia aplikację Google Chat przy użyciu konta usługi lub danych logowania użytkownika.
  3. Google Chat renderuje wiadomość aplikacji w określonym pokoju czatu.

Zakresy interfejsu Chat API

Skonfiguruj ekran zgody OAuth i wybierz zakresy, aby określić, jakie informacje mają być wyświetlane użytkownikom i weryfikatorom aplikacji, oraz zarejestruj aplikację, aby móc ją później opublikować.

Aby określić poziom dostępu przyznany aplikacji, musisz wskazać i zadeklarować zakresy autoryzacji. Zakres autoryzacji to ciąg znaków identyfikatora URI OAuth 2.0 zawierający nazwę aplikacji Google Workspace, rodzaj danych, do których uzyskuje ona dostęp, oraz poziom dostępu.

Zakresy niewrażliwe

Kod zakresu Opis
https://www.googleapis.com/auth/chat.bot

Zakres chat.bot obsługuje tylko konta usługi. Przy użyciu tego zakresu nie możesz uwierzytelniać się za pomocą danych logowania użytkownika ani z przekazywaniem dostępu w całej domenie.

Pozwala aplikacjom Google Chat na wyświetlanie czatów i wysyłanie wiadomości. Daje dostęp do wszystkich funkcji dostępnych dla aplikacji Google Chat.

Zakresy wrażliwe

Kod zakresu Opis
https://www.googleapis.com/auth/chat.spaces Tworzenie rozmów i pokoi oraz wyświetlanie i edytowanie metadanych (w tym ustawień historii i ustawień dostępu) w Google Chat.
https://www.googleapis.com/auth/chat.spaces.create tworzyć nowych rozmów w Google Chat,
https://www.googleapis.com/auth/chat.spaces.readonly Wyświetlanie czatu i pokoi w Google Chat.
https://www.googleapis.com/auth/chat.memberships Wyświetlanie, dodawanie, aktualizowanie i usuwanie uczestników rozmów w Google Chat.
https://www.googleapis.com/auth/chat.memberships.app dodawać siebie do rozmów w Google Chat i usuwać je z nich;
https://www.googleapis.com/auth/chat.memberships.readonly Wyświetlanie uczestników rozmów w Google Chat.
https://www.googleapis.com/auth/chat.messages.create Tworzenie i wysyłanie wiadomości w Google Chat.
https://www.googleapis.com/auth/chat.messages.reactions Wyświetlanie, dodawanie i usuwanie reakcji na wiadomości w Google Chat.
https://www.googleapis.com/auth/chat.messages.reactions.create Dodawanie reakcji na wiadomość w Google Chat.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Wyświetlanie reakcji na wiadomość w Google Chat.
https://www.googleapis.com/auth/chat.users.readstate Wyświetlanie i modyfikowanie czasu ostatniego odczytu rozmów w Google Chat.
https://www.googleapis.com/auth/chat.users.readstate.readonly Wyświetlanie czasu ostatniego odczytu rozmów w Google Chat.
https://www.googleapis.com/auth/chat.admin.spaces.readonly Wyświetlanie w Google Chat czatu i pokoi należących do domeny administratora.
https://www.googleapis.com/auth/chat.admin.spaces Wyświetlanie i edytowanie w Google Chat czatów i pokoi należących do domeny administratora.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Wyświetlanie użytkowników i menedżerów w rozmowach należących do domeny administratora w Google Chat.
https://www.googleapis.com/auth/chat.admin.memberships Wyświetlanie, dodawanie, aktualizowanie i usuwanie członków i menedżerów w rozmowach należących do domeny administratora w Google Chat.

Zakresy z ograniczeniami

Kod zakresu Opis
https://www.googleapis.com/auth/chat.delete usuwać rozmowy i pokoje oraz odbierać dostęp do powiązanych plików w Google Chat.
https://www.googleapis.com/auth/chat.import Importuj pokoje, wiadomości i subskrypcje do Google Chat. Więcej informacji znajdziesz w artykule o autoryzowaniu aplikacji Google Chat do importowania danych.
https://www.googleapis.com/auth/chat.messages Wyświetlanie, tworzenie, wysyłanie, aktualizowanie i usuwanie wiadomości oraz dodawanie, wyświetlanie i usuwanie reakcji na wiadomości.
https://www.googleapis.com/auth/chat.messages.readonly Wyświetlanie wiadomości i reakcji w Google Chat.
https://www.googleapis.com/auth/chat.admin.delete usuwać rozmowy i pokoje należące do domeny administratora oraz odbierać dostęp do powiązanych plików w Google Chat.

Zakresy w poprzednich tabelach wskazują ich czułość zgodnie z tymi definicjami:

Jeśli Twoja aplikacja wymaga dostępu do innych interfejsów API Google, możesz też dodać te zakresy. Więcej informacji o zakresach interfejsów API Google znajdziesz w artykule Korzystanie z protokołu OAuth 2.0 na potrzeby dostępu do interfejsów API Google.

Więcej informacji o zakresach interfejsów API Google Workspace znajdziesz w artykule Konfigurowanie ekranu zgody OAuth i wybieranie zakresów.

Rodzaje wymaganego uwierzytelniania

Aplikacje Google Chat mogą uwierzytelniać i autoryzować przy użyciu interfejsu Chat API 2 sposoby: dane logowania użytkownika lub konta usługi.

Dzięki autoryzacji danych logowania użytkownika aplikacja Google Chat ma dostęp do danych użytkownika i może wykonywać działania w jego imieniu. Zakresy protokołu OAuth określają autoryzowane dane i działania.

Dzięki autoryzacji aplikacji aplikacja do obsługi czatu uzyskuje dostęp do interfejsu API jako aplikacja za pomocą danych logowania konta usługi. Autoryzacja aplikacji zawsze używa zakresu autoryzacji chat.bot.

Wybierając typ danych logowania do użycia w konkretnym żądaniu do interfejsu API, pamiętaj, że niektóre metody API obsługują tylko określony typ danych logowania. Jeśli metoda interfejsu API obsługuje oba dane logowania, typ danych logowania użyty w wywołaniu wpływa na zwracany wynik:

  • W przypadku autoryzacji aplikacji metody zwracają tylko zasoby, do których aplikacja ma dostęp.
  • W przypadku autoryzacji użytkownika metody zwracają tylko zasoby, do których użytkownik ma dostęp w interfejsie Google Chat.

Na przykład wywołanie metody ListSpaces z autoryzacją aplikacji zwraca listę pokoi, do których należy aplikacja. Wywołanie ListSpaces z autoryzacją użytkownika zwraca listę pokoi, do których należy ten użytkownik. W praktyce aplikacja może używać obu typów autoryzacji podczas wywoływania interfejsu Chat API w zależności od funkcji, których potrzebujesz.

Asynchroniczne wywołania interfejsu Chat API

W tabeli poniżej znajdziesz metody interfejsu Chat API oraz ich obsługiwane zakresy autoryzacji:

Metoda obsługiwane uwierzytelnianie użytkowników, Obsługa uwierzytelniania aplikacji Obsługiwane zakresy autoryzacji
Pokoje  
Tworzenie pokoju W przypadku uwierzytelniania użytkowników:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Konfigurowanie pokoju W przypadku uwierzytelniania użytkowników:
  • chat.spaces.create
  • chat.spaces
Zrób pokój W przypadku uwierzytelniania użytkowników:
  • chat.spaces.readonly
  • chat.spaces
W przypadku uwierzytelniania aplikacji:
  • chat.bot
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.spaces.readonly
Pokoje listy W przypadku uwierzytelniania użytkowników:
  • chat.spaces.readonly
  • chat.spaces
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Szukaj w pokojach W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.spaces.readonly
Aktualizowanie pokoju W przypadku uwierzytelniania użytkowników:
  • chat.spaces
  • chat.import
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.spaces
Usuwanie pokoju W przypadku uwierzytelniania użytkowników:
  • chat.delete
  • chat.import
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.delete
Zakończenie procesu importowania pokoju W przypadku uwierzytelniania użytkowników:
  • chat.import
Znajdowanie czatu W przypadku uwierzytelniania użytkowników:
  • chat.spaces.readonly
  • chat.spaces
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Członkowie  
Tworzenie członka grupy W przypadku uwierzytelniania użytkowników:
  • chat.memberships
  • chat.memberships.app
  • chat.import
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.memberships
Zasubskrybuj W przypadku uwierzytelniania użytkowników:
  • chat.memberships.readonly
  • chat.memberships
W przypadku uwierzytelniania aplikacji:
  • chat.bot
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.memberships.readonly
Członkowie grupy W przypadku uwierzytelniania użytkowników:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
W przypadku uwierzytelniania aplikacji:
  • chat.bot
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.memberships.readonly
Usuwanie użytkownika W przypadku uwierzytelniania użytkowników:
  • chat.memberships
  • chat.memberships.app
  • chat.import
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.memberships
Aktualizowanie członka W przypadku uwierzytelniania użytkowników:
  • chat.memberships
  • chat.import
W przypadku uwierzytelniania użytkowników za pomocą uprawnień administratora:
  • chat.admin.memberships
Wiadomości  
Tworzenie wiadomości W przypadku uwierzytelniania użytkowników:
  • chat.messages.create
  • chat.messages
  • chat.import
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Odbierz wiadomość W przypadku uwierzytelniania użytkowników:
  • chat.messages.readonly
  • chat.messages
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Wyświetlanie listy wiadomości W przypadku uwierzytelniania użytkowników:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Aktualizowanie wiadomości W przypadku uwierzytelniania użytkowników:
  • chat.messages
  • chat.import
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Usuwanie wiadomości W przypadku uwierzytelniania użytkowników:
  • chat.messages
  • chat.import
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Reakcje  
Tworzenie reakcji W przypadku uwierzytelniania użytkowników:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Lista reakcji W przypadku uwierzytelniania użytkowników:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Usuwanie reakcji W przypadku uwierzytelniania użytkowników:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Multimedia i załączniki  
Przesyłanie multimediów jako załącznika W przypadku uwierzytelniania użytkowników:
  • chat.messages.create
  • chat.messages
  • chat.import
Pobieranie multimediów W przypadku uwierzytelniania użytkowników:
  • chat.messages.readonly
  • chat.messages
W przypadku uwierzytelniania aplikacji:
  • chat.bot
Otrzymywanie załącznika do wiadomości Korzystając z uwierzytelniania aplikacji:
  • chat.bot
Stany odczytu użytkownika
Pobieranie stanu odczytu pokoju użytkownika W przypadku uwierzytelniania użytkowników:
  • chat.users.readstate
  • chat.users.readstate.readonly
Aktualizowanie stanu odczytu pokoju użytkownika W przypadku uwierzytelniania użytkowników:
  • chat.users.readstate
Uzyskiwanie stanu odczytu wątku użytkownika W przypadku uwierzytelniania użytkowników:
  • chat.users.readstate
  • chat.users.readstate.readonly
Wydarzenia na temat pokoju
Pobierz wydarzenia dotyczące pokoju W przypadku uwierzytelniania użytkowników:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly
Wyświetl listę zdarzeń dotyczących pokoju W przypadku uwierzytelniania użytkowników:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly

Zdarzenia interakcji z aplikacją Google Chat

W tabeli poniżej znajdziesz typowe sposoby korzystania przez użytkowników z aplikacji Google Chat oraz informacje o tym, czy uwierzytelnianie jest wymagane czy obsługiwane:

Scenariusz Uwierzytelnianie nie jest wymagane obsługiwane uwierzytelnianie użytkowników, Obsługa uwierzytelniania aplikacji
Otrzymuj wiadomości z:
Zdarzenia interakcji z aplikacją do obsługi czatu
Wywołania zwrotne Apps Script
Google Cloud Pub/Sub
Odpowiadanie na wiadomości:
synchronicznie przy użyciu zdarzenia interakcji z aplikacją Google Chat,
synchronicznie z użyciem wartości zwrotnej wywołania zwrotnego Apps Script,
Wysyłaj nowe wiadomości:
Z przychodzącymi webhookami