以 Google Chat 使用者身分進行驗證與授權

本指南說明如何搭配使用 OAuth 2.0 與使用者將 Google 憑證 存取 Chat API。驗證與授權 透過使用者憑證,Chat 擴充應用程式就能存取使用者資料並執行 驗證使用者執行作業驗證使用者的 則應用程式具備與該使用者相同的權限,且可執行動作 就像操作使用者一樣

驗證和授權後 透過使用者憑證進行 API 呼叫,即時通訊應用程式就能 包括:

  • 建立 Chat 聊天室。
  • 將使用者新增至 Chat 聊天室和群組對話。
  • 使用其他 Workspace API 中的使用者資料,例如:

應用程式透過使用者驗證機制執行動作時 (例如建立聊天室) 時,Google Chat 會顯示作者訊息 用來告知使用者,執行該動作的應用程式名稱 取得授權的使用者。

Google Chat 應用程式會為使用者建立聊天室。
圖 1. 當 Chat 應用程式代表使用者建立聊天室時,Google Chat 顯示的註明出處訊息。

進一步瞭解 Chat 擴充應用程式何時需要驗證,以及 應使用哪種驗證方法 必要驗證類型 請參閱 Chat API 驗證與授權總覽。

使用全網域委派功能進行驗證和授權

如果您是網域管理員, 全網域授權委派 授權應用程式的服務帳戶存取使用者未使用 都必須取得每位使用者的同意設定全網域委派功能後 這個 服務帳戶可模擬使用者帳戶。 雖然服務帳戶 全網域委派功能會冒用使用者的身分,因此 視為使用者驗證。任何需要使用者的功能 驗證,即可使用全網域委派。

使用管理員權限進行驗證與授權

如果你是網域管理員或具備管理員權限的委派管理員,可以在適用方法的要求中設定 use_admin_access 欄位,透過管理員權限來驗證呼叫 Google Chat API 並授權呼叫。如需更多資訊,請參閱 API 參考說明文件

請注意,當 Google Chat 應用程式執行具備管理員權限的操作時,Chat 並不會將執行動作的 Chat 應用程式名稱或授權管理員的名稱告知使用者,只會告知使用者這項動作是由機構管理員執行。

必要條件

Java

  • 企業或企業 具有存取權的 Google Workspace 帳戶 Google Chat
  • 建立 Google Cloud 專案
  • 啟用並設定 Google Chat API。 圖示和說明
  • JDK 1.7 以上版本
  • Maven 套件管理工具
  • 初始化的 Maven 專案。如要初始化新專案,請在 指令列介面:
    mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Python

Node.js

Apps Script

步驟 1:設定 OAuth 同意畫面、指定範圍及註冊應用程式

當您使用 OAuth 2.0 進行授權時,Google 會顯示同意畫面, 內容包括專案的摘要、政策及 授權範圍設定應用程式的 OAuth 同意畫面 定義 Google 向使用者顯示的內容和應用程式審查員,並註冊您的應用程式 以便日後發布

所有使用 OAuth 2.0 的應用程式都需要同意畫面設定,但您 請針對非 Google Workspace 使用者使用的應用程式列出範圍 並根據貴機構的使命 價值觀和目標進行調整

  1. 在 Google Cloud 控制台中,前往「選單」圖示 > API 與服務 >「OAuth 同意畫面」

    前往 OAuth 同意畫面

  2. 選取應用程式的使用者類型,然後按一下「Create」(建立)。

  3. 填寫應用程式註冊表單,然後按一下「Save and Continue」

  4. 按一下「新增或移除範圍」。新增並驗證 應用程式要求的授權範圍,請依序按一下「更新」>「儲存並繼續」

  5. 查看應用程式註冊摘要。按一下「編輯」進行變更,或 按一下 [返回資訊主頁]

步驟 2:在 Google Cloud 控制台中建立 OAuth 用戶端 ID 憑證

如要以使用者身分進行驗證,並存取應用程式中的使用者資料,您需要 建立一或多個 OAuth 2.0 用戶端 ID。用戶端 ID 可用來識別 單一應用程式傳送至 Google 的 OAuth 伺服器。如果應用程式 平台 (例如 Android、iOS 和網頁) 上,您必須個別建立用戶端 ID 每個平台

,瞭解如何調查及移除這項存取權。

建立 OAuth 用戶端 ID 憑證

選擇您的應用程式類型,瞭解建立 OAuth 用戶端 ID 的具體操作說明:

網頁應用程式

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「網頁應用程式」
  4. 在「名稱」欄位中輸入憑證的名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 新增與應用程式相關的已授權 URI:
    • 用戶端應用程式 (JavaScript):按一下「授權的 JavaScript 來源」下方的「新增 URI」。然後輸入瀏覽器要求的 URI。可識別應用程式可以從哪些網域傳送 API 要求至 OAuth 2.0 伺服器。
    • 伺服器端應用程式 (Java、Python 等):按一下「已授權的重新導向 URI」下方的「新增 URI」。然後輸入端點 URI,讓 OAuth 2.0 伺服器傳送回應。
  6. 點選「建立」。系統隨即會顯示已建立 OAuth 用戶端的畫面,並顯示您的新用戶端 ID 和用戶端密鑰。

    記下用戶端 ID。用戶端密碼不適用於網頁應用程式,

  7. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

Android

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「Android」
  4. 在「名稱」欄位,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「Package name」中欄位,輸入 AndroidManifest.xml 檔案中的套件名稱。
  6. 在「SHA-1 憑證指紋」中欄位中輸入您產生的 SHA-1 憑證指紋
  7. 點選「建立」。畫面上會顯示 OAuth 用戶端建立的畫面,其中顯示您的新用戶端 ID。
  8. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

iOS

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「iOS」
  4. 在「名稱」欄位,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「Bundle ID」欄位,輸入應用程式 Info.plist 檔案中列出的軟體包 ID。
  6. 選用:如果您的應用程式顯示在 Apple App Store 中,請輸入 App Store ID。
  7. 選用:在「團隊 ID」中欄位中輸入 Apple 產生的不重複字串 (共 10 個字元),並指派給您的團隊。
  8. 點選「建立」。系統隨即會顯示已建立 OAuth 用戶端的畫面,並顯示您的新用戶端 ID 和用戶端密鑰。
  9. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

Chrome 應用程式

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序按一下「應用程式類型」>「Chrome 應用程式」
  4. 在「名稱」欄位,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「應用程式 ID」中欄位,輸入應用程式的不重複 32 個字元 ID 字串。您可以在應用程式的 Chrome 線上應用程式商店網址和 Chrome 線上應用程式商店開發人員資訊主頁中找到這個 ID 值。
  6. 點選「建立」。系統隨即會顯示已建立 OAuth 用戶端的畫面,並顯示您的新用戶端 ID 和用戶端密鑰。
  7. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

電腦版應用程式

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序按一下「應用程式類型」>「電腦版應用程式」
  4. 在「名稱」欄位中輸入憑證的名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 點選「建立」。系統隨即會顯示已建立 OAuth 用戶端的畫面,並顯示您的新用戶端 ID 和用戶端密鑰。
  6. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

電視和受限的輸入裝置

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「電視與」受限的輸入裝置
  4. 在「名稱」欄位,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 點選「建立」。系統隨即會顯示已建立 OAuth 用戶端的畫面,並顯示您的新用戶端 ID 和用戶端密鑰。
  6. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

通用 Windows 平台 (UWP)

  1. 在 Google Cloud 控制台中,依序點選「選單」圖示 > 「API 與」「服務」 >「憑證」

    前往「憑證」

  2. 依序點選「建立憑證」>「OAuth 用戶端 ID」
  3. 依序點選「應用程式類型」>「通用 Windows 平台 (UWP)」
  4. 在「名稱」欄位,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 在「商店 ID」中] 欄位中輸入應用程式的唯一 12 個字元 Microsoft Store ID 值。您可以在應用程式的 Microsoft Store 網址和合作夥伴中心找到這個 ID。
  6. 點選「建立」。系統隨即會顯示已建立 OAuth 用戶端的畫面,並顯示您的新用戶端 ID 和用戶端密鑰。
  7. 按一下「OK」(確定)。新建立的憑證會顯示在「OAuth 2.0 用戶端 ID」之下。

下載用戶端密鑰 JSON 檔案

用戶端密鑰檔案是 OAuth 用戶端 ID 的 JSON 表示法 Chat 應用程式 並提供憑證

  1. 在 Google Cloud 控制台中,前往「選單」圖示 > API 與服務 >「憑證」

    前往「憑證」頁面

  2. 在「OAuth 2.0 用戶端 ID」之下,按一下您建立的用戶端 ID。

  3. 按一下「Download JSON」。

  4. 將檔案儲存為 client_secrets.json

步驟 3:安裝 Google 用戶端程式庫和其他依附元件

安裝 Google 用戶端程式庫和專案需要的其他依附元件。

Java

將 Google 用戶端程式庫和其他必要依附元件 Maven 專案,在專案目錄中編輯 pom.xml 檔案,然後將 下列依附元件:

<dependencies>
  <!-- ... existing dependencies ... -->
  <dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-chat</artifactId>
    <version>v1-rev20230905-2.0.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.19.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.34.1</version>
  </dependency>
  <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10.1</version>
  </dependency>
</dependencies>

Python

如果您尚未安裝 Python 適用的 Google 用戶端程式庫,請執行 執行下列指令:

pip3 install --upgrade google-api-python-client google-auth-oauthlib

Node.js

將 Google 用戶端程式庫和其他必要依附元件 Node.js 專案,切換至專案目錄,並執行下列指令 指令:

npm install "@googleapis/chat" open server-destroy

Apps Script

本範例使用 進階 Chat 服務 呼叫 Google Chat API。如要為 Apps Script 專案:

  1. 按一下左側的「編輯器」圖示
  2. 在左側的「服務」旁邊,按一下「新增服務」
  3. 選取「Google Chat API」
  4. 在「版本」中選取「v1」
  5. 按一下 [新增]。

你可以使用我們的 用戶端程式庫

步驟 4:編寫呼叫 Chat API 的指令碼

使用 OAuth 授權呼叫 API 需要完成多個步驟。網頁版或 一般而言,這項程序的流程如下:

  1. 應用程式將使用者導向授權頁面,要求使用者授予存取權 授權範圍指定的資料應用程式會透過用戶端進行自我識別 ID 憑證。
  2. 使用者查看應用程式要求的權限,並核准 請求。
  3. Google 的驗證伺服器將瀏覽器重新導向至應用程式的 HTTP 以及授權碼
  4. 應用程式再次向 Google 的授權伺服器傳送另一個要求至 以授權代碼換取存取權杖
  5. 應用程式使用存取權杖,代表使用者呼叫 API。

如要進一步瞭解 OAuth 授權程序,請參閱 使用 OAuth 2.0 存取 Google API 指南

下列 Java、Python 和 Node.js 的程式碼範例使用 用戶端程式庫 執行 OAuth 授權流程會開啟一個本機 HTTP 伺服器 從授權伺服器傳回授權碼 並藉此交換存取權杖 在 Apps Script 程式碼範例中,這個授權流程為 。

完成驗證流程後,指令碼會透過 Chat API。 然後建立聊天室

Java

  1. 在專案的目錄中開啟該檔案 src/main/java/com/google/chat/app/authsample/App.java
  2. App.java 中的內容替換為下列程式碼:

    package com.google.chat.app.authsample;
    
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.HttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.chat.v1.HangoutsChat;
    import com.google.api.services.chat.v1.model.Space;
    
    import java.io.InputStreamReader;
    import java.util.Collection;
    import java.util.Collections;
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    public class App {
        // Application OAuth credentials.
        private static final String KEYS_RESOURCE_URI = "/client_secrets.json";
    
        // Define your app's authorization scopes.
        private static final Collection<String> SCOPES =
            Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create");
    
        // Directory to store user credentials.
        private static final java.io.File DATA_STORE_DIR =
            new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app");
    
        // Global instance of the JSON factory.
        private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
        // Global instance of the HTTP transport.
        private static HttpTransport httpTransport;
    
        // Global instance of the DataStoreFactory. The best practice is to make it a single
        // globally shared instance across your application.
        private static FileDataStoreFactory dataStoreFactory;
    
        public static void main( String[] args ) {
            try {
                // Run app.
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
                Credential userCredential = authorize();
                Space response = App.createChatSpace(userCredential);
                // Print details about the created space.
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * Authorizes the installed application to access user's protected data.
         */
        private static Credential authorize() throws Exception {
            // Load client secrets.
            GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                new InputStreamReader(App.class.getResourceAsStream("/client_secrets.json")));
            // Set up authorization code flow.
            GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(dataStoreFactory)
                .build();
            // Authorize.
            return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
        }
    
        /**
         * Creates a Chat space.
         */
        private static Space createChatSpace(Credential userCredential) throws Exception {
            // Build the Chat API client and authenticate with the user account.
            HangoutsChat chatService = new HangoutsChat.Builder(
                httpTransport, JSON_FACTORY, userCredential)
                .setApplicationName("auth-sample-app")
                .build();
    
            // Create a Chat space.
            Space space = new Space()
                // To create a named space, set spaceType to SPACE.
                .setSpaceType("SPACE")
                // The user-visible name of the space.
                .setDisplayName("API-made");
            return chatService.spaces().create(space).execute();
        }
    }
    
  3. 在專案的目錄中建立名為 resources 的新子目錄。

  4. 將檔案 client_secrets.json 複製到 resources 子目錄。

  5. 如要設定 Maven 將用戶端密鑰檔案納入專案套件, 在專案的目錄中編輯 pom.xml 檔案,並加入下列內容 新增到 <build> 區段:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. 設定 Maven 以在專案套件中加入依附元件,並 若要執行應用程式的主要類別,請在 pom.xml 中 然後將以下設定新增至 <plugins>區段:

    <plugins>
      <!-- ... existing configurations ... -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.google.chat.app.authsample.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
    

Python

  1. 將下列程式碼儲存在名為 chat_space_create_named.py 的檔案 (位於 包含 client_secrets.json 的相同目錄:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]
    
    def main():
      '''
      Authenticates with Chat API via user credentials,
      then creates a Chat space.
      '''
    
      flow = InstalledAppFlow.from_client_secrets_file(
                        'client_secrets.json', SCOPES)
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      service = build('chat', 'v1', credentials=creds)
    
      # Use the service endpoint to call Chat API.
      result = service.spaces().create(
    
        # Details about the space to create.
        body = {
    
          # To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          # The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      ).execute()
    
      # Prints details about the created space.
      print(result)
    
    if __name__ == '__main__':
      main()
    

Node.js

  1. 將下列程式碼儲存在名為 chat_space_create_named.js 的檔案 (位於 包含 Node.js 專案和 client_secrets.json 的相同目錄:

    const fs = require('fs');
    const path = require('path');
    const http = require('http');
    const url = require('url');
    const destroyer = require('server-destroy');
    
    const chat = require('@googleapis/chat');
    
    // Application OAuth credentials.
    const keys = require('./client_secrets.json').installed;
    
    // Define your app's authorization scopes.
    // When modifying these scopes, delete the file token.json, if it exists.
    const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"];
    
    // Create a new OAuth2 client with the configured keys.
    const oauth2Client = new chat.auth.OAuth2(
      keys.client_id,
      keys.client_secret,
      'http://localhost:3000'
    );
    
    /**
     * Opens an HTTP server to accept the OAuth callback.
     * In this simple example, the only request to our webserver is to /?code=<code>.
     */
    async function authenticate(scopes) {
      const opn = (await import('open')).default;
    
      return new Promise((resolve, reject) => {
        // Generate the URL for authorization.
        const authorizeUrl = oauth2Client.generateAuthUrl({
          access_type: 'offline',
          scope: scopes.join(' '),
        });
        // Start the HTTP server to listen for the callback.
        const server = http
          .createServer(async (req, res) => {
            try {
              const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
              res.end('Authentication successful! Please return to the console.');
              server.destroy();
              const { tokens } = await oauth2Client.getToken(qs.get('code'));
              oauth2Client.credentials = tokens;
              resolve(oauth2Client);
            } catch (e) {
              reject(e);
            }
          })
          .listen(3000, () => {
            // Open the browser to the authorize URL to start the workflow.
            opn(authorizeUrl, { wait: false }).then(cp => cp.unref());
          });
        destroyer(server);
      });
    }
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    async function createSpace() {
      // Create the Chat API client and authenticate with the authorized user.
      const chatClient = await chat.chat({
        version: 'v1',
        auth: oauth2Client
      });
    
      // Call the Chat API to create a space.
      const result = await chatClient.spaces.create({
    
        // Details about the space to create.
        requestBody: {
    
          // To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          // The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      });
      return result;
    }
    
    // Authenticate the user, execute the function,
    // then print details about the created space.
    authenticate(scopes)
      .then(createSpace)
      .then(console.log);
    

Apps Script

  1. 在 Apps Script 編輯器中編輯 appsscript.json 檔案 並新增呼叫 API 所需的 OAuth 範圍:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. 請將下列程式碼儲存在名為 ChatSpaceCreateNamed.gs 的檔案中 Apps Script 專案:

    /**
     * Authenticates with Chat API via user credentials, then creates a
     * Chat space.
     */
    function createSpace() {
      try {
        // Details about the space to create.
        // To create a named space, set spaceType to SPACE.
        // The user-visible name of the space is displayName.
        const space = {'displayName': 'API-made', 'spaceType': 'SPACE'};
    
        // Call Chat API with user credentials to create the space.
        const result = Chat.Spaces.create(space);
    
        // Log details about the created space.
        console.log(result);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }
    

步驟 5:執行範例指令碼

如要執行範例,請從指令列前往 ,然後執行下列指令:

Java

mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar

Python

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

Apps Script

在 Apps Script 中開啟 ChatSpaceCreateNamed.gs 檔案 ,然後按一下「Run」(執行)

瀏覽器會隨即開啟,並提示您登入 Google 帳戶:

登入以授權 Chat 應用程式。

圖 2. 請在 OAuth 同意畫面中選取要用來驗證應用程式的帳戶。

您登入後,系統會隨即顯示 OAuth 同意畫面,要求您授予 授予應用程式權限

授予權限後,指令碼會呼叫 Chat API,這個 API 會從建立 顯示名稱為「API-made」的 Chat 聊天室。主控台會顯示 以及 API 呼叫的詳細資料如要尋找聊天室,請前往以下位置的「聊天室」面板: Google Chat。

排解範例問題

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

Expected a JSON object with a single property for a "web" or "installed" application

這則錯誤訊息表示您已下載的 client_secrets.json 檔案 (開頭為 "web""installed") 資源。使用已下載檔案進行驗證後,如果您的程式碼並未 將存取權杖儲存至 token.json 這類新檔案,則存取權杖為 寫入 client_secrets.json,導致後續發生這個錯誤 預授權金額。

如要解決錯誤,請從 Google Cloud 控制台下載用戶端密鑰檔案 ,並將新檔案儲存在目前檔案的位置。

  • 如果您的應用程式需要繼續使用範圍外的使用者權杖 就能儲存符記,以便之後重複使用。在本例中 應用程式需要安全地處理使用者權杖,並處理重新整理作業 憑證撤銷及到期。若需更多資訊,請參閲 使用 OAuth 2.0 最佳做法指南

  • 如要瞭解 Chat API 的其他功能,請參閱 Chat API 參考說明文件