驗證即時通訊應用程式

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

本指南說明如何設定及使用服務帳戶,以代表即時通訊應用程式存取 Google Chat REST API。首先,我們會逐步引導您建立服務帳戶。接著,我們會示範如何編寫該指令碼,以便透過服務帳戶使用 Chat API 進行驗證,並在 Chat 聊天室中張貼訊息。

即時通訊應用程式以非同步方式呼叫 Google Chat REST API 時,可以使用服務帳戶進行驗證:

  • 透過以下方式將訊息傳送至 Google Chat:spaces.messages.create
    • 長時間執行背景工作執行時通知使用者。
    • 提醒使用者伺服器已離線。
    • 要求客服人員考慮新建立的客戶案例。
  • 將先前傳送的 spaces.messages.update 訊息更新為:
    • 變更進行中的作業狀態。
    • 更新工作的指派對像或到期日。
  • 使用 spaces.members.list 列出聊天室中的使用者以執行下列操作:
    • 查看聊天室成員。
    • 驗證聊天室成員是否包含小組成員。

透過服務帳戶進行驗證後,如要在 Chat 聊天室中取得相關資料或執行動作,Chat 應用程式就必須具備聊天室成員身分。舉例來說,如要列出聊天室成員,或是在聊天室中建立訊息,Chat 應用程式本身必須為聊天室成員。

如果您的即時通訊應用程式需要存取使用者資料,或代表使用者執行動作,請改為以使用者身分進行驗證

如要進一步瞭解 Chat 應用程式何時需要驗證,以及要使用的驗證類型,請參閱 Chat API 驗證和授權總覽中的必要的驗證類型

必要條件

如要執行本指南中的範例,您必須符合下列條件:

Python

步驟 1:在 Google Cloud Console 中建立服務帳戶

建立可供 Chat 應用程式存取 Google API 的服務帳戶。

建立服務帳戶:

如要建立服務帳戶,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > [IAM 與管理] > [服務帳戶]

    前往「服務帳戶」

  2. 按一下「建立服務帳戶」
  3. 填寫服務帳戶詳細資料,然後按一下 [建立並繼續]
  4. 選擇性:為服務帳戶指派角色,以授予 Google Cloud 專案資源的存取權限。詳情請參閱授予、變更及撤銷資源的存取權
  5. 按一下 [繼續]。
  6. 選用:輸入可透過這個服務帳戶管理及執行動作的使用者或群組。詳情請參閱管理服務帳戶模擬功能
  7. 按一下「完成」

服務帳戶會顯示在服務帳戶頁面中。接下來,請為服務帳戶建立私密金鑰。

建立私密金鑰

如要為服務帳戶建立私密金鑰,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > [IAM 與管理] > [服務帳戶]

    前往「服務帳戶」

  2. 選取您的服務帳戶。
  3. 依序點選 [金鑰] > [新增金鑰] > [建立新的金鑰]
  4. 選取 [JSON],然後按一下 [Create] (建立)

    系統會產生新的公開/私密金鑰組,並以新檔案的形式下載至您的電腦。這個檔案是這組金鑰的唯一副本。如要瞭解如何安全地儲存金鑰,請參閱管理服務帳戶金鑰一文。

  5. 按一下「關閉」

如要進一步瞭解服務帳戶,請參閱 Google Cloud IAM 說明文件中的服務帳戶一文。

步驟 2:編寫使用服務帳戶透過 Chat REST API 進行驗證的指令碼

以下程式碼使用服務帳戶透過 Chat REST API 進行驗證,然後將訊息張貼到 Chat 空間:

Python

  1. 在工作目錄中建立名為 chat_app_auth.py 的檔案。
  2. chat_app_auth.py 中加入下列程式碼:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message.
    result = chat.spaces().messages().create(
    
        # The space to create the message in.
        #
        # Replace SPACE_NAME with a space name.
        # Obtain the space name from the spaces resource of Chat API,
        # or from a space's URL.
        parent='spaces/SPACE_NAME',
    
        # The message to create.
        body={'text': 'Hello, world!'}
    
    ).execute()
    
    print(result)
    
  3. 在程式碼中,將 SPACE_NAME 替換成聊天室名稱。您可以透過 Chat API 的 spaces.list 方法或聊天室網址取得該名稱。

步驟 3:執行完整範例

在工作目錄中建構並執行範例:

Python

python3 chat_app_auth.py

您的指令碼會對 Chat REST API 發出經過驗證的要求,這個 API 會在 Chat 聊天室中以即時通訊應用程式的形式張貼訊息。

排解範例問題

本節說明您在嘗試執行這個範例時可能會遇到的常見問題。

您無權使用這個應用程式

執行 chat_app_auth.py 時,您可能會收到以下錯誤訊息:

<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">

這則錯誤訊息表示 Chat 應用程式無權在要張貼訊息的 Chat 聊天室中張貼 Chat 訊息。

如要解決這個錯誤,請將 Chat 應用程式新增至 chat_app_auth.py 中指定的 Chat 聊天室

後續步驟

請查看 Chat API 參考說明文件,瞭解 Chat API 的其他功能。