Xác thực dưới dạng ứng dụng Google Chat

Hướng dẫn này giải thích cách thiết lập và sử dụng tài khoản dịch vụ để truy cập vào Google Chat API thay mặt cho một ứng dụng Chat. Trước tiên, hướng dẫn này sẽ chỉ cho bạn cách tạo tài khoản dịch vụ. Sau đó, hướng dẫn này minh hoạ cách viết một tập lệnh dùng tài khoản dịch vụ để xác thực bằng Chat API và đăng một thông báo trong một không gian trên Chat.

Khi được xác thực bằng tài khoản dịch vụ, để lấy dữ liệu về hoặc thực hiện các thao tác trong một phòng Chat, các ứng dụng Chat phải có quyền thành viên trong phòng đó. Ví dụ: để liệt kê các thành viên của một không gian hoặc để tạo một tin nhắn trong một không gian, ứng dụng Chat phải là thành viên của không gian đó. Trường hợp ngoại lệ duy nhất là khi một ứng dụng Chat tạo không gian bằng quy trình xác thực ứng dụng. Trong trường hợp này, ứng dụng sẽ tạo không gian rồi tự động trở thành thành viên.

Các phương thức Google Chat API hỗ trợ việc uỷ quyền cho ứng dụng bằng các phạm vi uỷ quyền có tên bắt đầu bằng https://www.googleapis.com/auth/chat.app.* yêu cầu quản trị viên phê duyệt một lần. Các phương thức Google Chat API hỗ trợ việc uỷ quyền ứng dụng bằng phạm vi uỷ quyền https://www.googleapis.com/auth/chat.bot không yêu cầu phê duyệt bổ sung. Các phạm vi uỷ quyền https://www.googleapis.com/auth/chat.app.* có trong Bản dùng thử cho nhà phát triển.

Nếu ứng dụng Chat của bạn cần truy cập vào dữ liệu người dùng hoặc thực hiện hành động thay cho người dùng, hãy xác thực dưới tư cách người dùng. Nếu là quản trị viên miền, bạn có thể cấp quyền uỷ quyền trên toàn miền để cho phép tài khoản dịch vụ của một ứng dụng Chat truy cập vào dữ liệu của người dùng mà không cần từng người dùng phải đồng ý. Để biết thêm thông tin, hãy xem bài viết Xác thực và uỷ quyền bằng tính năng uỷ quyền trên toàn miền.

Để tìm hiểu thêm về thời điểm ứng dụng Chat yêu cầu xác thực và loại xác thực cần sử dụng, hãy xem phần Các loại xác thực bắt buộc trong phần tổng quan về hoạt động xác thực và uỷ quyền của Chat API.

Điều kiện tiên quyết

Java

  • JDK 1.7 trở lên
  • Công cụ quản lý gói Maven
  • Một dự án Maven đã được khởi tạo. Để khởi động một dự án mới, hãy chạy lệnh sau trong giao diện dòng lệnh:
    mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
  • Một ứng dụng Google Chat nhận và phản hồi sự kiện tương tác. Để tạo một ứng dụng Chat tương tác bằng dịch vụ HTTP, hãy hoàn tất hướng dẫn bắt đầu nhanh này.
  • Thêm ứng dụng Chat vào một không gian. Để thêm ứng dụng Chat, hãy xem phần Kiểm thử các tính năng tương tác cho ứng dụng Google Chat.

Python

Node.js

Apps Script

Bước 1: Tạo tài khoản dịch vụ trong bảng điều khiển Google Cloud

Tạo một tài khoản dịch vụ mà ứng dụng Chat của bạn có thể dùng để truy cập vào các API của Google.

Tạo một tài khoản dịch vụ

Để tạo tài khoản dịch vụ, hãy làm theo các bước sau:

Bảng điều khiển Google Cloud

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến phần Tài khoản dịch vụ

  2. Nhấp vào Tạo tài khoản dịch vụ.
  3. Điền thông tin tài khoản dịch vụ, rồi nhấp vào Tạo và tiếp tục.
  4. Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ của bạn để cấp quyền truy cập vào các tài nguyên của dự án Google Cloud. Để biết thêm thông tin chi tiết, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.
  5. Nhấp vào Tiếp tục.
  6. Không bắt buộc: Nhập người dùng hoặc nhóm có thể quản lý và thực hiện các thao tác bằng tài khoản dịch vụ này. Để biết thêm thông tin, hãy tham khảo bài viết Quản lý hoạt động mạo danh tài khoản dịch vụ.
  7. Nhấp vào Xong. Ghi lại địa chỉ email của tài khoản dịch vụ.

gcloud CLI

  1. Tạo tài khoản dịch vụ:
    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --display-name="SERVICE_ACCOUNT_NAME"
  2. Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ của bạn để cấp quyền truy cập vào các tài nguyên của dự án Google Cloud. Để biết thêm thông tin chi tiết, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.

Tài khoản dịch vụ sẽ xuất hiện trên trang tài khoản dịch vụ. Tiếp theo, hãy tạo một khoá riêng tư cho tài khoản dịch vụ.

Tạo khoá riêng tư

Để tạo và tải khoá riêng tư xuống cho tài khoản dịch vụ, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đến phần Tài khoản dịch vụ

  2. Chọn tài khoản dịch vụ của bạn.
  3. Nhấp vào Khoá > Thêm khoá > Tạo khoá mới.
  4. Chọn JSON, rồi nhấp vào Tạo.

    Cặp khoá công khai/riêng tư mới của bạn sẽ được tạo và tải xuống máy của bạn dưới dạng một tệp mới. Lưu tệp JSON đã tải xuống dưới dạng credentials.json trong thư mục đang hoạt động. Tệp này là bản sao duy nhất của khoá này. Để biết thông tin về cách lưu trữ khoá một cách an toàn, hãy xem phần Quản lý khoá tài khoản dịch vụ.

  5. Nhấp vào Close (Đóng).

Để biết thêm thông tin về tài khoản dịch vụ, hãy xem phần tài khoản dịch vụ trong tài liệu IAM của Google Cloud.

Tiếp theo, hãy tạo một ứng dụng OAuth tương thích với Google Workspace Marketplace cho tài khoản dịch vụ này.

Nhận được sự phê duyệt của quản trị viên

Để sử dụng phạm vi uỷ quyền https://www.googleapis.com/auth/chat.bot, bạn không cần có sự phê duyệt của quản trị viên. Chuyển đến Bước 2: Cài đặt thư viện ứng dụng Google và các phần phụ thuộc khác. Ví dụ trong hướng dẫn này sử dụng phạm vi uỷ quyền https://www.googleapis.com/auth/chat.bot, vì vậy nếu bạn đang làm theo ví dụ này, hãy chuyển đến bước 2.

Để sử dụng một phạm vi uỷ quyền bắt đầu bằng https://www.googleapis.com/auth/chat.app.* (có trong Bản dùng thử cho nhà phát triển), Ứng dụng trò chuyện của bạn phải nhận được sự phê duyệt của quản trị viên một lần.

Để nhận được sự phê duyệt của quản trị viên, bạn phải chuẩn bị tài khoản dịch vụ của ứng dụng Chat bằng thông tin sau:

  • Một ứng dụng OAuth tương thích với Google Workspace Marketplace.
  • Cấu hình ứng dụng trong Google Workspace Marketplace SDK.

Tạo ứng dụng OAuth tương thích với Google Workspace Marketplace

Để tạo một ứng dụng OAuth tương thích với Google Workspace Marketplace, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn > IAM và quản trị > Tài khoản dịch vụ.

    Chuyển đến phần Tài khoản dịch vụ

  2. Nhấp vào tài khoản dịch vụ mà bạn đã tạo cho ứng dụng Chat.

  3. Nhấp vào Cài đặt nâng cao.

  4. Nhấp vào Tạo ứng dụng khách OAuth tương thích với Google Workspace Marketplace.

  5. Nhấp vào Tiếp tục.

Một thông báo xác nhận sẽ xuất hiện cho biết bạn đã tạo một ứng dụng OAuth tương thích với Google Workspace Marketplace.

Định cấu hình ứng dụng Chat trong Google Workspace Marketplace SDK

Để định cấu hình ứng dụng Chat trong Bộ công cụ phát triển phần mềm Google Workspace Marketplace, hãy làm theo các bước sau:

  1. Trong Google Cloud Console, hãy bật Google Workspace Marketplace SDK.

    Bật SDK Google Workspace Marketplace

  2. Trong Bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và Dịch vụ > API và dịch vụ đã bật > Google Workspace Marketplace SDK > Cấu hình ứng dụng.

    Chuyển đến phần Cấu hình ứng dụng

  3. Hoàn tất trang Cấu hình ứng dụng. Cách bạn định cấu hình ứng dụng Chat phụ thuộc vào đối tượng mục tiêu và các yếu tố khác. Để được trợ giúp hoàn tất trang cấu hình ứng dụng, hãy xem phần Định cấu hình ứng dụng trong Bộ công cụ phát triển phần mềm Google Workspace Marketplace. Để phục vụ mục đích của hướng dẫn này, hãy nhập thông tin sau:

    1. Trong phần Chế độ hiển thị của ứng dụng, hãy chọn Riêng tư.
    2. Trong phần Cài đặt khi cài đặt, hãy chọn Cài đặt cho từng người dùng + quản trị viên.
    3. Trong phần Tích hợp ứng dụng, hãy chọn Ứng dụng Chat.
    4. Trong phần Phạm vi OAuth, hãy nhập tất cả phạm vi xác thực mà ứng dụng Chat của bạn sử dụng.

    5. Trong phần Thông tin về nhà phát triển, hãy nhập Tên nhà phát triển, URL trang web của nhà phát triểnEmail của nhà phát triển.

    6. Nhấp vào Lưu bản nháp.

Xin phê duyệt của quản trị viên

Giờ đây, tài khoản dịch vụ của bạn đã được định cấu hình để nhận được sự phê duyệt của quản trị viên. Hãy lấy sự phê duyệt đó từ một quản trị viên Google Workspace có thể cấp quyền phê duyệt bằng cách làm theo các bước trong phần Thiết lập quyền uỷ quyền cho ứng dụng Chat.

Bước 2: Cài đặt thư viện ứng dụng Google và các phần phụ thuộc khác

Cài đặt thư viện ứng dụng Google và các phần phụ thuộc khác cần thiết cho dự án.

Java

Để thêm các thư viện ứng dụng Google và các phần phụ thuộc bắt buộc khác vào dự án Maven, hãy chỉnh sửa tệp pom.xml trong thư mục dự án rồi thêm các phần phụ thuộc sau:

<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.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10.1</version>
  </dependency>
</dependencies>

Python

Nếu bạn chưa cài đặt thư viện ứng dụng Google cho Python, hãy chạy lệnh sau trong giao diện dòng lệnh:

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

Node.js

Để thêm thư viện ứng dụng Google vào dự án Node.js, hãy chuyển sang thư mục của dự án và chạy lệnh sau trong giao diện dòng lệnh:

npm install "@googleapis/chat"

Apps Script

Mẫu này sử dụng thư viện OAuth2 cho Apps Script để tạo mã thông báo JWT cho quá trình xác thực tài khoản dịch vụ. Cách thêm thư viện vào dự án Apps Script:

  1. Ở bên trái, hãy nhấp vào Trình chỉnh sửa .
  2. Ở bên trái, bên cạnh Thư viện, hãy nhấp vào Thêm thư viện .
  3. Nhập mã tập lệnh 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF.
  4. Nhấp vào Tìm kiếm, rồi nhấp vào Thêm.

Mẫu này sử dụng dịch vụ Chat nâng cao để gọi API Google Chat. Cách bật dịch vụ cho dự án Apps Script:

  1. Ở bên trái, hãy nhấp vào Trình chỉnh sửa .
  2. Ở bên trái, bên cạnh Dịch vụ, hãy nhấp vào Thêm dịch vụ .
  3. Chọn Google Chat API.
  4. Trong phần Phiên bản, hãy chọn v1.
  5. Nhấp vào Thêm.

Bạn có thể sử dụng mọi ngôn ngữ mà thư viện ứng dụng của chúng tôi hỗ trợ.

Bước 3: Viết một tập lệnh sử dụng tài khoản dịch vụ để xác thực bằng Chat API

Đoạn mã sau đây xác thực bằng API Chat bằng tài khoản dịch vụ, sau đó đăng một tin nhắn lên không gian Chat:

Java

  1. Trong thư mục của dự án, hãy mở tệp src/main/java/com/google/chat/app/authsample/App.java.
  2. Thay thế nội dung trong App.java bằng đoạn mã sau:

    package com.google.chat.app.authsample;
    
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.HttpRequestInitializer;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.services.chat.v1.HangoutsChat;
    import com.google.api.services.chat.v1.model.Message;
    import com.google.auth.http.HttpCredentialsAdapter;
    import com.google.auth.oauth2.GoogleCredentials;
    
    /**
     * Authenticates with Chat API using service account credentials,
     * then creates a Chat message.
     */
    public class App {
        // Specify required scopes.
        private static final String CHAT_SCOPE = "https://www.googleapis.com/auth/chat.bot";
    
        // Specify service account details.
        private static final String PRIVATE_KEY_RESOURCE_URI = "/credentials.json";
    
        public static void main( String[] args ) {
            try {
                // Run app.
                Message response = App.createChatMessage();
                // Print details about the created message.
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        private static Message createChatMessage() throws Exception {
            // Build the Chat API client and authenticate with the service account.
            GoogleCredentials credentials = GoogleCredentials.fromStream(
                App.class.getResourceAsStream(PRIVATE_KEY_RESOURCE_URI))
                .createScoped(CHAT_SCOPE);
            HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials);
            HangoutsChat chatService = new HangoutsChat.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                GsonFactory.getDefaultInstance(),
                requestInitializer)
                .setApplicationName("auth-sample-app")
                .build();
    
            // 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.
            String spaceName = "spaces/SPACE_NAME";
    
            // Create a Chat message.
            Message message = new Message().setText("Hello, world!");
            return chatService.spaces().messages().create(spaceName, message).execute();
        }
    }
    
  3. Trong mã, hãy thay thế SPACE_NAME bằng tên khoảng trắng. Bạn có thể lấy tên này từ phương thức spaces.list trong Chat API hoặc từ URL của một khoảng trắng.

  4. Tạo một thư mục con mới có tên là resources trong thư mục của dự án.

  5. Đảm bảo rằng tệp khoá riêng tư cho tài khoản dịch vụ của bạn có tên là credentials.json và sao chép tệp đó vào thư mục con resources.

  6. Để định cấu hình Maven nhằm đưa tệp khoá riêng tư vào gói dự án, hãy chỉnh sửa tệp pom.xml trong thư mục dự án và thêm cấu hình sau vào mục <build>:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  7. Để định cấu hình Maven nhằm đưa các phần phụ thuộc vào gói dự án và thực thi lớp chính của ứng dụng, hãy chỉnh sửa tệp pom.xml trong thư mục dự án rồi thêm cấu hình sau vào mục <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. Trong thư mục làm việc, hãy tạo một tệp có tên là chat_app_auth.py.
  2. Thêm mã sau vào chat_app_auth.py:

    from apiclient.discovery import build
    from google.oauth2 import service_account
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    creds = service_account.Credentials.from_service_account_file(
        'credentials.json', scopes=SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=creds)
    
    # 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()
    
    # Prints details about the created message.
    print(result)
    
  3. Trong mã, hãy thay thế SPACE_NAME bằng tên khoảng trắng. Bạn có thể lấy tên này từ phương thức spaces.list trong Chat API hoặc từ URL của một khoảng trắng. Đảm bảo rằng tệp khoá riêng tư cho tài khoản dịch vụ của bạn có tên là credentials.json.

Node.js

  1. Trong thư mục của dự án, hãy tạo một tệp có tên là chat_app_auth.js.
  2. Thêm mã sau vào chat_app_auth.js:

    const chat = require('@googleapis/chat');
    
    async function createMessage() {
      const auth = new chat.auth.GoogleAuth({
    
        // Specify service account details.
        keyFilename: 'credentials.json',
    
        // Specify required scopes.
        scopes: ['https://www.googleapis.com/auth/chat.bot']
    
      });
      const authClient = await auth.getClient();
    
      // Create the Chat API client and authenticate with the service account.
      const chatClient = await chat.chat({
        version: 'v1',
        auth: authClient
      });
    
      // Create a Chat message.
      const result = await chatClient.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.
        requestBody: { 'text': 'Hello, world!' }
    
      });
      return result;
    }
    
    // Execute function then print details about the created message.
    createMessage().then(console.log);
    
  3. Trong mã, hãy thay thế SPACE_NAME bằng tên khoảng trắng. Bạn có thể lấy tên này từ phương thức spaces.list trong Chat API hoặc từ URL của một khoảng trắng. Đảm bảo rằng tệp khoá riêng tư cho tài khoản dịch vụ của bạn có tên là credentials.json.

Apps Script

  1. Trong trình chỉnh sửa Apps Script, hãy chỉnh sửa tệp appsscript.json và thêm phạm vi OAuth cần thiết để đưa ra các yêu cầu bên ngoài nhằm lấy mã thông báo OAuth của tài khoản dịch vụ:

      "oauthScopes": [
        "https://www.googleapis.com/auth/script.external_request"
      ]
    
  2. Lưu mã sau vào một tệp có tên là ChatAppAuth.gs trong dự án Apps Script của bạn:

    // Specify the contents of the file credentials.json.
    const CREDENTIALS = CREDENTIALS;
    
    const SCOPE = 'https://www.googleapis.com/auth/chat.bot';
    
    // 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.
    const PARENT = 'spaces/SPACE_NAME'
    
    /**
     * Authenticates with Chat API using app credentials, then posts a message.
     */
    function createMessageWithAppCredentials() {
      try {
        const service = getService_();
        if (!service.hasAccess()) {
          console.error(service.getLastError());
          return;
        }
    
        // Specify the message to create.
        const message = {'text': 'Hello world!'};
    
        // Call Chat API with a service account to create a message.
        const result = Chat.Spaces.Messages.create(
            message,
            PARENT,
            {},
            // Authenticate with the service account token.
            {'Authorization': 'Bearer ' + service.getAccessToken()});
    
        // Log details about the created message.
        console.log(result);
    
      } catch (err) {
        // TODO (developer) - Handle exception.
        console.log('Failed to create message with error %s', err.message);
      }
    }
    
    /**
     * Configures the OAuth library to authenticate with the service account.
     */
    function getService_() {
      return OAuth2.createService(CREDENTIALS.client_email)
          .setTokenUrl('https://oauth2.googleapis.com/token')
          .setPrivateKey(CREDENTIALS.private_key)
          .setIssuer(CREDENTIALS.client_email)
          .setSubject(CREDENTIALS.client_email)
          .setScope(SCOPE)
          .setPropertyStore(PropertiesService.getScriptProperties());
    }
    
  3. Trong mã, hãy thay thế CREDENTIALS bằng nội dung của tệp credentials.json.

  4. Trong mã, hãy thay thế SPACE_NAME bằng tên khoảng trắng. Bạn có thể lấy tên này từ phương thức spaces.list trong Chat API hoặc từ URL của một khoảng trắng.

Bước 4: Chạy ví dụ hoàn chỉnh

Trong thư mục làm việc, hãy tạo và chạy mẫu:

Java

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

Python

python3 chat_app_auth.py

Node.js

node chat_app_auth.js

Apps Script

Mở tệp ChatAppAuth.gs trong Trình chỉnh sửa Apps Script rồi nhấp vào Chạy.

Tập lệnh của bạn đưa ra một yêu cầu đã xác thực đến API Chat. API này sẽ phản hồi bằng cách đăng một tin nhắn trong không gian Chat dưới dạng một ứng dụng Chat.

Khắc phục sự cố trong ví dụ

Phần này mô tả các vấn đề thường gặp mà bạn có thể gặp phải khi cố gắng chạy mẫu này.

Bạn không được phép sử dụng ứng dụng này

Khi chạy tập lệnh, bạn có thể nhận được thông báo lỗi cho biết:

<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">

Thông báo lỗi này có nghĩa là ứng dụng Chat không có quyền tạo tin nhắn Chat trong không gian Chat được chỉ định.

Để khắc phục lỗi này, hãy thêm ứng dụng Chat vào phòng Chat được chỉ định trong tập lệnh.

Quản trị viên phải cấp cho ứng dụng phạm vi uỷ quyền OAuth cần thiết cho hành động này

Khi chạy tập lệnh, bạn có thể nhận được thông báo lỗi cho biết:

<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}?alt=json returned "The administrator must grant the app the required OAuth authorization scope for this action.". Details: "The administrator must grant the app the required OAuth authorization scope for this action.">

Thông báo lỗi này có nghĩa là quản trị viên Google Workspace chưa cấp quyền phê duyệt một lần cho ứng dụng Chat để sử dụng các phạm vi uỷ quyền bắt đầu bằng tên https://www.googleapis.com/auth/chat.app.*.

Cách giải quyết lỗi:

  • Yêu cầu quản trị viên Google Workspace phê duyệt ứng dụng Chat của bạn. Khi xử lý lỗi này trong logic của ứng dụng Chat, hãy cân nhắc việc gửi một thông báo cho biết ứng dụng Chat cần được quản trị viên phê duyệt để thực hiện hành động được yêu cầu, chẳng hạn như: To perform this action, I need approval. <https://support.google.com/a?p=chat-app-auth|Learn more>.
  • Nếu phương thức Google Chat API hỗ trợ phạm vi uỷ quyền https://www.googleapis.com/auth/chat.bot (không yêu cầu quản trị viên phê duyệt), hãy cân nhắc sử dụng phương thức này. Để kiểm tra xem phương thức nào hỗ trợ phạm vi uỷ quyền, hãy xem tài liệu tham khảo về API Google Chat.