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 dostęp do zasobów. W tym dokumencie opisujemy, jak uwierzytelnianie działa w przypadku aplikacji Google Chat i żądań do interfejsu Chat API.

Omówienie procesu

Na diagramie poniżej widać ogólne kroki uwierzytelniania 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 oraz skonfiguruj Aplikacja do obsługi czatu: w trakcie tworzenia aplikacji tworzysz Projekt Google Cloud. w projekcie Google Cloud włączysz interfejs Chat API, skonfigurować aplikację Google Chat oraz ustawić uwierzytelnianie. Więcej informacji: Programowanie w Google Workspace i Tworzenie aplikacji Google Chat.

  2. Call Chat API: gdy aplikacja wywołuje Chat API, wysyła dane uwierzytelniające do Interfejs Chat API. Jeśli uwierzytelnia się przy użyciu konta usługi, dane uwierzytelniające są wysyłane jako stanowią część kodu aplikacji. Jeśli aplikacja wymaga wywoływania interfejsu Chat API za pomocą nieprzeprowadzonego uwierzytelniania użytkownika, użytkownik musi się zalogować.

  3. Przesyłanie próśb o zasoby: aplikacja prosi o dostęp przy użyciu: zakresy określonego podczas konfigurowania uwierzytelniania.

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

  5. Wyślij zatwierdzoną prośbę o udostępnienie zasobów: jeśli użytkownik wyrazi zgodę na zakresów autoryzacji, aplikacja łączy dane uwierzytelniające oraz dane zatwierdzone przez użytkownika w określone zakresy w żądaniu. Żądanie jest wysyłane do serwera autoryzacji Google aby uzyskać token dostępu.

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

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

  8. Uzyskaj token odświeżania (opcjonalnie): jeśli aplikacja musi mieć dostęp do Interfejs Google Chat API po upłynięciu pojedynczego tokena dostępu może uzyskać token odświeżania. Więcej informacji: Dostęp do interfejsów API Google przy użyciu OAuth 2.0

  9. Poproś o więcej zasobów: jeśli aplikacja potrzebuje więcej uprawnień, wyświetla prośbę do użytkownika. w celu przyznania nowych zakresów, co skutkuje wysłaniem nowego żądania uzyskania tokena 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; asynchronicznie. Mogą też wykonywać w imieniu użytkownika zadania, takie jak: tworząc pokój czatu lub otrzymując listę osób Pokój czatu.

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

Aby wysyłać wiadomości asynchroniczne lub wykonywać zadania w imieniu użytkownika, Aplikacje do obsługi czatu wysyłają żądania REST do Chat API które wymagają uwierzytelniania i autoryzacji.

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

Aplikacje Google Chat nie muszą uwierzytelniać się jako użytkownik lub Aplikacja do obsługi czatu, która otrzymuje wiadomości i odpowiada na nie synchronicznie zdarzenia interakcji.

Aplikacje Google Chat odbierają zdarzenia interakcji za każdym razem, gdy użytkownik wchodzi w interakcję z użytkownikiem 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ń aplikacji Google Chat polecenia po ukośniku.

Na diagramie poniżej widać sekwencję żądania i odpowiedzi Użytkownik Google Chat i aplikacja Google Chat:

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

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

Ta sekwencja powtarza się przy każdej interakcji w aplikacji Google Chat .

Wiadomości asynchroniczne wymagają uwierzytelniania

Komunikaty asynchroniczne występują, gdy aplikacja Google Chat wykona do Chat API który wymaga uwierzytelnienia i autoryzacji.

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

  • Utwórz pokój czatu, aby zbadać i naprawić przerwach w działaniu usługi.
  • Dodaj osoby do pokoju czatu.
  • Opublikuj w pokoju czatu wiadomość, w której podasz szczegóły przerwach w działaniu usługi.

Poniższy diagram przedstawia asynchroniczną sekwencję komunikatów między Aplikacja Google Chat i pokój czatu:

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

  1. Aplikacja Google Chat tworzy wiadomość, wywołując metodę Interfejs Chat API za pomocą 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ść z aplikacji w określonym Google Chat kosmosu.

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, aby opublikować ją później.

Aby określić poziom dostępu przyznanego aplikacji, musisz określić zadeklarować zakresy autoryzacji. Zakres autoryzacji to identyfikator URI OAuth 2.0 ciąg znaków zawierający nazwę aplikacji Google Workspace, rodzaj danych, 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. Ty nie może uwierzytelnić się za pomocą danych logowania użytkownika lub za pomocą usługi przekazywanie dostępu w całej domenie za pomocą tego zakresu.

Pozwala aplikacjom Google Chat na wyświetlanie czatów i wysyłanie wiadomości. Daje dostęp do wszystkich funkcji 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 ustawienia 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 Usuwanie rozmów i pokoi oraz odbieranie dostępu do powiązanych plików w Google Chat.
https://www.googleapis.com/auth/chat.import Importuj pokoje, wiadomości i subskrypcje do Google Chat. Dla: więcej informacji znajdziesz w Autoryzowanie importowania danych przez aplikacje do obsługi czatu
https://www.googleapis.com/auth/chat.messages Wyświetlanie, tworzenie, wysyłanie, aktualizowanie i usuwanie wiadomości oraz dodawanie, wyświetlanie i usuwać reakcje 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ć wątki i pokoje należące do domeny administratora, a także odbierać dostęp do powiązanych plików. w Google Chat.

Zakresy w poprzednich tabelach wskazują ich czułość na podstawie następujące definicje:

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

Więcej informacji o zakresach interfejsów Google Workspace API znajdziesz tutaj: Skonfiguruj ekran zgody OAuth i wybierz zakresy.

Rodzaje wymaganego uwierzytelniania

Aplikacje do obsługi czatu mogą uwierzytelniać się i autoryzować przy użyciu 2 sposób interfejsu Chat API: dane logowania użytkownika lub konta usługi.

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

Dzięki autoryzacji aplikacji aplikacja Google Chat uzyskuje dostęp do: API jako aplikację za pomocą danych logowania konta usługi. Zawsze autoryzacja aplikacji korzysta z zakresu autoryzacji chat.bot.

Wybierając typ danych logowania dla danego żądania do interfejsu API, pamiętaj, że niektóre metody interfejsu API obsługują tylko określony typ danych logowania. Jeśli metoda interfejsu API obsługuje oba te rodzaje danych logowania, typ danych logowania używany w wywołaniu wpływa na zwracany wynik:

  • W przypadku autoryzacji aplikacji metody zwracają tylko zasoby, które aplikacja może dostęp.
  • W przypadku autoryzacji użytkownika metody zwracają tylko zasoby, które użytkownik mają 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łuję ListSpaces razem z użytkownikiem autoryzacja zwraca listę pokoi, których członkiem jest użytkownik. W , aplikacja może używać obu typów autoryzacji przy wywoływaniu 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 Za pomocą uwierzytelniania użytkowników:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Konfigurowanie pokoju Za pomocą uwierzytelniania użytkowników:
  • chat.spaces.create
  • chat.spaces
Zrób pokój Za pomocą uwierzytelniania użytkowników:
  • chat.spaces.readonly
  • chat.spaces
Uwierzytelnianie aplikacji:
  • chat.bot
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.spaces.readonly
Pokoje listy Za pomocą uwierzytelniania użytkowników:
  • chat.spaces.readonly
  • chat.spaces
Uwierzytelnianie aplikacji:
  • chat.bot
Szukaj w pokojach W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.spaces.readonly
Aktualizowanie pokoju Za pomocą uwierzytelniania użytkowników:
  • chat.spaces
  • chat.import
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.spaces
Usuwanie pokoju Za pomocą uwierzytelniania użytkowników:
  • chat.delete
  • chat.import
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.delete
Zakończenie procesu importowania pokoju Za pomocą uwierzytelniania użytkowników:
  • chat.import
Znajdowanie czatu Za pomocą uwierzytelniania użytkowników:
  • chat.spaces.readonly
  • chat.spaces
Uwierzytelnianie aplikacji:
  • chat.bot
Członkowie  
Tworzenie członka grupy Za pomocą uwierzytelniania użytkowników:
  • chat.memberships
  • chat.memberships.app
  • chat.import
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.memberships
Zasubskrybuj Za pomocą uwierzytelniania użytkowników:
  • chat.memberships.readonly
  • chat.memberships
Uwierzytelnianie aplikacji:
  • chat.bot
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.memberships.readonly
Członkowie grupy Za pomocą uwierzytelniania użytkowników:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Uwierzytelnianie aplikacji:
  • chat.bot
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.memberships.readonly
Usuwanie użytkownika Za pomocą uwierzytelniania użytkowników:
  • chat.memberships
  • chat.memberships.app
  • chat.import
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.memberships
Aktualizowanie członka Za pomocą uwierzytelniania użytkowników:
  • chat.memberships
  • chat.import
W przypadku uwierzytelniania użytkowników przy użyciu uprawnień administratora:
  • chat.admin.memberships
Wiadomości  
Tworzenie wiadomości Za pomocą uwierzytelniania użytkowników:
  • chat.messages.create
  • chat.messages
  • chat.import
Uwierzytelnianie aplikacji:
  • chat.bot
Odbierz wiadomość Za pomocą uwierzytelniania użytkowników:
  • chat.messages.readonly
  • chat.messages
Uwierzytelnianie aplikacji:
  • chat.bot
Wyświetlanie listy wiadomości Za pomocą uwierzytelniania użytkowników:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Aktualizowanie wiadomości Za pomocą uwierzytelniania użytkowników:
  • chat.messages
  • chat.import
Uwierzytelnianie aplikacji:
  • chat.bot
Usuwanie wiadomości Za pomocą uwierzytelniania użytkowników:
  • chat.messages
  • chat.import
Uwierzytelnianie aplikacji:
  • chat.bot
Reakcje  
Tworzenie reakcji Za pomocą uwierzytelniania użytkowników:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Lista reakcji Za pomocą uwierzytelniania użytkowników:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Usuwanie reakcji Za pomocą uwierzytelniania użytkowników:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Multimedia i załączniki  
Przesyłanie multimediów jako załącznika Za pomocą uwierzytelniania użytkowników:
  • chat.messages.create
  • chat.messages
  • chat.import
Pobieranie multimediów Za pomocą uwierzytelniania użytkowników:
  • chat.messages.readonly
  • chat.messages
Uwierzytelnianie aplikacji:
  • chat.bot
Otrzymywanie załącznika do wiadomości Za pomocą uwierzytelniania aplikacji:
  • chat.bot
Stany odczytu użytkownika
Pobieranie stanu odczytu pokoju użytkownika Za pomocą uwierzytelniania użytkowników:
  • chat.users.readstate
  • chat.users.readstate.readonly
Aktualizowanie stanu odczytu pokoju użytkownika Za pomocą uwierzytelniania użytkowników:
  • chat.users.readstate
Uzyskiwanie stanu odczytu wątku użytkownika Za pomocą uwierzytelniania użytkowników:
  • chat.users.readstate
  • chat.users.readstate.readonly
Wydarzenia na temat pokoju
Zyskaj dostęp do wydarzeń dotyczących pokoju Za pomocą 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 Za pomocą 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