驗證及授權即時通訊應用程式和 Google Chat API 要求

驗證和授權機制是用來驗證身分和 還能分別存取資源本文將概述 Chat 應用程式和 Chat API 要求的驗證和授權作業運作方式。

流程總覽

下圖顯示驗證和 Google Chat 授權:

Google Chat 驗證與授權的高階步驟
圖 1. Google Chat 驗證和授權程序的概略步驟。

  1. 設定 Google Cloud 專案、啟用 Chat API,並設定 Chat 擴充應用程式:在開發期間,您會建立 存取 Google Cloud 專案在 Google Cloud 專案中,您可以啟用 Chat API、設定 Chat 應用程式,以及設定驗證機制。詳情請參閱「在 Google Workspace 上進行開發」和「建構 Chat 應用程式」。

  2. Call Chat API:當應用程式呼叫 Chat API,會將驗證憑證傳送給 Chat API。如果應用程式使用服務帳戶進行驗證,憑證會隨應用程式程式碼一併傳送。如果您的應用程式需要使用尚未授予的使用者驗證資訊呼叫 Chat API,系統會提示使用者登入。

  3. 要求資源:應用程式要求存取以下項目 範圍 您在設定驗證時指定的 IP 位址。

  4. 要求同意:如果您的應用程式以使用者身分進行驗證,Google 會顯示 OAuth 同意畫面,讓使用者決定是否要授予應用程式存取要求資料的權限。使用服務帳戶進行驗證不需要取得使用者同意。

  5. 傳送已核准的資源要求:如果使用者同意 授權範圍,您應用程式會將憑證和使用者通過核准 轉換為要求要求傳送至 Google 授權伺服器 取得存取權杖

  6. Google 傳回存取權憑證:存取權憑證包含已授予的範圍清單。如果傳回的範圍清單比要求的範圍更嚴格,應用程式會關閉任何受憑證限制的功能。

  7. 存取要求的資源:您的應用程式會使用 Google 提供的存取權杖,叫用 Chat API 並存取 Chat API 資源。

  8. 取得更新權杖 (選用):如果應用程式必須存取 相較於單一存取權杖的生命週期,Google Chat API 也能取得 重新整理權杖。詳情請參閱「使用 OAuth 2.0 存取 Google API」。

  9. 要求更多資源:如果您的應用程式需要更多存取權,系統會要求使用者授予更多資源 授予新範圍,導致收到新的要求來取得存取權杖 (步驟 3-6)。

當 Chat 擴充應用程式需要驗證時

即時通訊應用程式可以根據使用者互動傳送訊息,或 以非同步方式載入物件也可以代表使用者完成工作,例如建立 Chat 聊天室或取得 Chat 聊天室中的使用者清單。

即時通訊應用程式不需要驗證,就能回應 使用者互動,除非 Chat 應用程式呼叫 Chat API 或其他 Google API 就在處理回應期間

如要傳送非同步訊息或代表使用者執行工作 即時通訊應用程式會向 Chat API 需要驗證和授權

回應使用者互動時不需要驗證

Google Chat 應用程式不需要以使用者的身分進行驗證 同步接收及回覆通訊對象的即時通訊應用程式 互動事件

每當有使用者互動或應用程式互動時,Google Chat 應用程式就會收到互動事件 叫用 Chat 應用程式,包括:

  • 使用者傳送訊息至 Chat 應用程式。
  • 使用者使用 @號提及 Chat 應用程式。
  • 使用者叫用其中一個 Chat 應用程式 斜線指令

下圖顯示了 Chat 使用者和 Chat 應用程式:

使用 Chat 應用程式互動事件時不需要授權
圖 2:Chat 應用程式互動事件不需要驗證。

  1. 使用者透過以下方式傳送訊息給 Chat 應用程式: Google Chat。
  2. Google Chat 會將訊息轉寄至應用程式。
  3. 應用程式接收、處理訊息,並將回應傳回給 Google Chat。
  4. Google Chat 會為使用者或聊天室顯示回覆。

每次即時通訊應用程式互動都會重複這個序列 活動。

非同步郵件需要驗證

當 Chat 應用程式 要求 Chat API 需要驗證和授權

藉由呼叫 Chat API,即時通訊應用程式就可以張貼訊息 加入 Google Chat,或代表使用者完成工作及存取資料。舉例來說,在偵測到伺服器中斷服務後,Chat 應用程式可以呼叫 Chat API 來執行以下操作:

  • 建立專門用來調查及修正的 Chat 聊天室 以及服務中斷情形
  • 將使用者加入 Chat 聊天室。
  • 在 Chat 聊天室中張貼訊息,說明服務中斷的詳細資訊。

下圖顯示 Chat 應用程式和 Chat 聊天室之間的非同步訊息序列:

非同步訊息需要驗證
圖 3. 非同步訊息需要驗證。

  1. Chat 應用程式透過呼叫 透過 spaces.messages.create 方法, 並在 HTTP 要求中納入使用者憑證
  2. Google Chat 會使用服務帳戶或使用者憑證驗證 Chat 應用程式。
  3. Google Chat 會在特定 Chat 中顯示應用程式訊息 空白鍵。

Chat API 範圍

設定 OAuth 同意畫面並選擇範圍 定義要對使用者和應用程式審查者顯示的資訊,並註冊 供您日後發布

如要定義授予應用程式的存取權層級,您必須找出 宣告授權範圍。授權範圍是 OAuth 2.0 URI 字串,其中包含 Google Workspace 應用程式名稱、應用程式存取的資料類型,以及存取層級。

非機密範圍

範圍程式碼 說明
https://www.googleapis.com/auth/chat.bot

讓 Chat 應用程式查看聊天內容並傳送訊息。

此範圍僅支援具有服務帳戶的應用程式驗證。您無法使用此範圍,透過使用者憑證或全網域委派進行驗證。

機密範圍

範圍代碼 說明
https://www.googleapis.com/auth/chat.spaces 建立對話和聊天室,以及查看或編輯中繼資料 (包括 對話記錄設定及存取權設定) 同步處理資料。
https://www.googleapis.com/auth/chat.spaces.create 在 Chat 中建立新對話。
https://www.googleapis.com/auth/chat.spaces.readonly 在 Chat 中查看即時通訊和聊天室。
https://www.googleapis.com/auth/chat.memberships 查看、新增、更新及移除 Chat 對話的成員。
https://www.googleapis.com/auth/chat.memberships.app 在 Google Chat 的對話中新增及移除本應用程式。
https://www.googleapis.com/auth/chat.memberships.readonly 查看 Chat 對話中的成員。
https://www.googleapis.com/auth/chat.messages.create 在 Chat 中撰寫及傳送訊息。
https://www.googleapis.com/auth/chat.messages.reactions 在 Chat 中查看、新增和刪除訊息回應。
https://www.googleapis.com/auth/chat.messages.reactions.create 在 Chat 中回應訊息。
https://www.googleapis.com/auth/chat.messages.reactions.readonly 在 Chat 中查看訊息回應。
https://www.googleapis.com/auth/chat.users.readstate 查看及修改 Chat 對話的上次已讀時間。
https://www.googleapis.com/auth/chat.users.readstate.readonly 查看 Chat 對話的上次讀取時間。
https://www.googleapis.com/auth/chat.admin.spaces.readonly 在 Chat 中查看管理員網域擁有的即時通訊和聊天室。
https://www.googleapis.com/auth/chat.admin.spaces 在 Chat 中查看或編輯管理員網域擁有的即時通訊和聊天室。
https://www.googleapis.com/auth/chat.admin.memberships.readonly 在 Chat 中查看管理員網域所擁有對話的成員和管理員。
https://www.googleapis.com/auth/chat.admin.memberships 查看、新增、更新及移除 Chat 中管理員網域所擁有對話的成員和管理員。
https://www.googleapis.com/auth/chat.app.spaces

建立對話和聊天室,以及查看或更新中繼資料 (包括 對話記錄設定及存取權設定) 同步處理資料。必要條件 管理員核准

此範圍僅支援具有服務帳戶的應用程式驗證。您無法使用此範圍,透過使用者憑證或全網域委派進行驗證。

https://www.googleapis.com/auth/chat.app.spaces.create

在 Chat 中建立新的對話和聊天室。必要條件 管理員核准

這個範圍僅支援使用服務帳戶進行應用程式驗證。您無法使用此範圍,透過使用者憑證或全網域委派進行驗證。

https://www.googleapis.com/auth/chat.app.memberships

在 Chat 的對話和聊天室中查看、新增、更新及移除成員。 須經過管理員核准

此範圍僅支援具有服務帳戶的應用程式驗證。您無法使用此範圍,透過使用者憑證或全網域委派進行驗證。

https://www.googleapis.com/auth/chat.customemojis 在 Chat 中查看、建立及刪除自訂表情符號。

受限制的範圍

範圍程式碼 說明
https://www.googleapis.com/auth/chat.delete 刪除對話和聊天室,以及移除 Chat 中相關檔案的存取權。
https://www.googleapis.com/auth/chat.import 將聊天室、訊息和成員資格匯入 Chat。適用對象 如需更多資訊,請參閱 授權 Chat 擴充應用程式匯入資料
https://www.googleapis.com/auth/chat.messages 查看、撰寫、傳送、更新及刪除郵件,還能新增、查看和 刪除訊息的回應。
https://www.googleapis.com/auth/chat.messages.readonly 在 Chat 中查看訊息和回應。
https://www.googleapis.com/auth/chat.admin.delete 刪除管理員網域擁有的對話和聊天室,並移除 Chat 中相關檔案的存取權。
https://www.googleapis.com/auth/chat.app.delete

刪除對話和聊天室,並移除相關檔案的存取權 。 須經過管理員核准

此範圍僅支援具有服務帳戶的應用程式驗證。您無法使用此範圍,透過使用者憑證或全網域委派進行驗證。

上表的範圍指出此等機密程度,取決於 下列定義:

如果應用程式需要存取其他 Google API,您也可以新增這些範圍。如要進一步瞭解 Google API 範圍,請參閱「使用 OAuth 2.0 存取 Google API」。

如要進一步瞭解 Google Workspace API 的範圍,請參閱 設定 OAuth 同意畫面並選擇範圍

必要驗證類型

透過兩種方式來驗證和授權 Chat 擴充應用程式 Chat API:

使用者驗證
使用者驗證功能可讓 Chat 應用程式存取使用者資料,並代表使用者執行動作。OAuth 範圍會指定經過授權的資料和動作。 除非 Chat 應用程式是 管理員安裝 或已提供 全網域委派、 Chat 應用程式第一次對其他應用程式執行操作時 使用者必須代表 Chat 應用程式 OAuth 同意畫面
應用程式驗證

應用程式驗證功能 Chat 擴充應用程式會使用服務帳戶憑證和存取權 資料並完成動作由於 Chat 應用程式會使用自己的憑證存取及使用資源,因此使用者不必核准 Chat 應用程式的 API 呼叫,您也無法在 OAuth 同意聲明畫面中新增支援應用程式授權的 OAuth 授權範圍。

支援應用程式驗證的兩種 OAuth 授權範圍有以下兩種:

  • https://www.googleapis.com/auth/chat.bot: 你的 Chat 應用程式可以呼叫 Google Chat API 方法,以便建立、更新、取得 列出或刪除有權存取的資源,例如聊天室中的訊息 方便使用者將您的即時通訊應用程式加入 Chat 應用程式可以自行授予這項授權範圍,無須經過管理員或使用者授權。
  • https://www.googleapis.com/auth/chat.app.* (開發人員預覽版): 這些範圍需要經過一次性管理員核准。目的地: 獲得管理員核准 準備好 Chat 應用程式的服務帳戶,取得管理員核准 您需要建立與 Google Workspace Marketplace 相容的 OAuth 用戶端 在 Google Workspace Marketplace SDK 中設定應用程式。這些範圍 允許你的 Chat 應用程式呼叫特定的 Google Chat API 方法。舉例來說,chat.app.spaces.create 可讓應用程式建立 Chat 聊天室。

如果方法同時支援使用者或應用程式驗證,Chat API 會根據您使用的驗證類型傳回不同的結果:

  • 透過應用程式驗證功能,這些方法只會傳回 Chat 應用程式可以存取。
  • 透過使用者驗證,這些方法只會傳回使用者可以存取的資源。

舉例來說,使用應用程式授權呼叫 spaces.list() 方法會傳回 Chat 應用程式所屬的聊天室清單。 使用者授權呼叫 spaces.list() 時,會傳回使用者所屬空間的清單。於 實務上,您或許可以同時使用 驗證次數是否通過驗證 和 Chat 應用程式的功能

非同步 Chat API 呼叫

下表列出 Chat API 方法及其支援的授權範圍:

方法 支援使用者驗證功能 支援應用程式驗證功能 支援的授權範圍
聊天室  
建立聊天室 使用使用者驗證
  • chat.spaces.create
  • chat.spaces
  • chat.import
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.spaces.create
  • chat.app.spaces
設定聊天室 透過使用者驗證
  • chat.spaces.create
  • chat.spaces
取得聊天室 透過使用者驗證
  • chat.spaces.readonly
  • chat.spaces
透過使用管理員權限使用者驗證
  • chat.admin.spaces.readonly
透過應用程式驗證功能:
  • chat.bot
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.spaces
列出聊天室 透過使用者驗證
  • chat.spaces.readonly
  • chat.spaces
使用應用程式驗證
  • chat.bot
搜尋聊天室 透過使用管理員權限進行使用者驗證
  • chat.admin.spaces.readonly
更新聊天室 透過使用者驗證
  • chat.spaces
  • chat.import
透過使用管理員權限使用者驗證
  • chat.admin.spaces
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.spaces
刪除聊天室 透過使用者驗證
  • chat.delete
  • chat.import
透過使用管理員權限使用者驗證
  • chat.admin.delete
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.delete
完成聊天室匯入程序 透過使用者驗證
  • chat.import
尋找即時訊息 使用使用者驗證
  • chat.spaces.readonly
  • chat.spaces
透過應用程式驗證功能:
  • chat.bot
成員  
建立成員 透過使用者驗證
  • chat.memberships
  • chat.memberships.app
  • chat.import
透過使用管理員權限使用者驗證
  • chat.admin.memberships
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.memberships
加入會員 透過使用者驗證
  • chat.memberships.readonly
  • chat.memberships
透過應用程式驗證功能:
  • chat.bot
使用管理員權限進行使用者驗證
  • chat.admin.memberships.readonly
名單成員 使用使用者驗證
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
透過應用程式驗證功能:
  • chat.bot
透過使用管理員權限使用者驗證
  • chat.admin.memberships.readonly
刪除成員 透過使用者驗證
  • chat.memberships
  • chat.memberships.app
  • chat.import
透過使用管理員權限使用者驗證
  • chat.admin.memberships
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.memberships
更新成員 透過使用者驗證
  • chat.memberships
  • chat.import
透過使用管理員權限使用者驗證
  • chat.admin.memberships
透過應用程式驗證管理員核准 (適用於開發人員預覽版):
  • chat.app.memberships
訊息  
建立訊息 透過使用者驗證
  • chat.messages.create
  • chat.messages
  • chat.import
透過應用程式驗證功能:
  • chat.bot
接收訊息 透過使用者驗證
  • chat.messages.readonly
  • chat.messages
使用應用程式驗證
  • chat.bot
列出訊息 使用使用者驗證
  • chat.messages.readonly
  • chat.messages
  • chat.import
更新訊息 透過使用者驗證
  • chat.messages
  • chat.import
透過應用程式驗證功能:
  • chat.bot
刪除訊息 使用使用者驗證
  • chat.messages
  • chat.import
透過應用程式驗證功能:
  • chat.bot
反應  
建立回應 透過使用者驗證
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
列出回應 透過使用者驗證
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
刪除回應 透過使用者驗證
  • chat.messages.reactions
  • chat.messages
  • chat.import
自訂表情符號  
建立自訂表情符號 透過使用者驗證
  • chat.customemojis
刪除自訂表情符號 透過使用者驗證
  • chat.customemojis
取得自訂表情符號 使用使用者驗證
  • chat.customemojis
列出自訂表情符號 透過使用者驗證
  • chat.customemojis
媒體和附件  
以檔案附件上傳媒體 透過使用者驗證
  • chat.messages.create
  • chat.messages
  • chat.import
下載媒體 透過使用者驗證
  • chat.messages.readonly
  • chat.messages
透過應用程式驗證功能:
  • chat.bot
取得訊息附件 透過應用程式驗證功能:
  • chat.bot
使用者讀取狀態
取得使用者的聊天室讀取狀態 透過使用者驗證
  • chat.users.readstate
  • chat.users.readstate.readonly
更新使用者的空間讀取狀態 使用使用者驗證
  • chat.users.readstate
取得使用者的執行緒讀取狀態 透過使用者驗證
  • chat.users.readstate
  • chat.users.readstate.readonly
空間事件
取得太空活動 透過使用者驗證功能 必須根據 事件類型
  • 針對訊息事件:
    • chat.messages
    • chat.messages.readonly
  • 回應相關事件:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • 會員相關活動:
    • chat.memberships
    • chat.memberships.readonly
  • 針對聊天室相關事件:
    • chat.spaces
    • chat.spaces.readonly
列出聊天室事件 透過使用者驗證功能 您必須為各個 事件類型
  • 有關訊息的事件:
    • chat.messages
    • chat.messages.readonly
  • 回應相關事件:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • 會員相關活動:
    • chat.memberships
    • chat.memberships.readonly
  • 聊天室相關活動:
    • chat.spaces
    • chat.spaces.readonly

適用於 Chat 應用程式互動事件

下表列出使用者常見的互動方式 即時通訊應用程式,以及是否需要或支援驗證:

情境 不需要驗證 支援使用者驗證功能 支援應用程式驗證功能
接收來自以下來源的訊息:
Chat 應用程式互動事件
Apps Script 回呼
Google Cloud Pub/Sub
回覆訊息:
使用 Chat 應用程式互動事件進行同步
同步,使用 Apps Script 回呼傳回值
傳送新訊息:
使用連入 Webhook