Xác thực là ứng dụng nhắn tin

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 API REST của Google Chat thay mặt cho ứng dụng nhắn tin. Trước tiên, hướng dẫn này sẽ hướng dẫn bạn cách tạo tài khoản dịch vụ. Sau đó, tài liệu này minh hoạ cách viết tập lệnh sử dụng tài khoản dịch vụ để xác thực bằng API Chat và đăng thông báo trong phòng Chat.

Các ứng dụng nhắn tin có thể sử dụng tài khoản dịch vụ để xác thực khi gọi không đồng bộ API REST của Google Chat để có thể:

  • Gửi tin nhắn đến Google Chat bằng spaces.messages.create để:
    • Thông báo cho người dùng khi một công việc trong nền chạy trong thời gian dài hoàn tất việc chạy.
    • Thông báo cho người dùng rằng máy chủ đã chuyển sang chế độ ngoại tuyến.
    • Yêu cầu một nhân viên hỗ trợ khách hàng trực tiếp với một trường hợp khách hàng mới mở.
  • Cập nhật thông báo đã gửi trước đó bằng spaces.messages.update để:
    • Thay đổi trạng thái của hoạt động đang diễn ra.
    • Cập nhật người được giao và ngày đến hạn của việc cần làm.
  • Liệt kê người dùng trong một không gian bằng spaces.members.list để:
    • Xem ai đang ở trong một không gian.
    • Xác minh rằng thành viên của không gian bao gồm mọi người trong nhóm.

Khi được xác thực bằng tài khoản dịch vụ, để nhận dữ liệu hoặc thực hiện các thao tác trong phòng Chat, các ứng dụng Chat phải có gói 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 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.

Nếu ứng dụng Chat cần truy cập vào dữ liệu người dùng hoặc thực hiện các hành động thay mặt người dùng, hãy xác thực tư cách người dùng.

Để 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 nội dung Các loại xác thực bắt buộc trong phần tổng quan về API ủy quyền và xác thực.

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

Để chạy ví dụ trong hướng dẫn này, bạn cần đáp ứng các điều kiện tiên quyết sau:

Python

Bước 1: Tạo tài khoản dịch vụ trong Google Cloud Console

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

Tạo 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:

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

    Chuyển đế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 chi tiết về tài khoản dịch vụ, sau đó nhấp vào Tạo và tiếp tục.
  4. Không bắt buộc: Chỉ định các vai trò cho tài khoản dịch vụ để cấp quyền truy cập vào các tài nguyên của dự án trê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 những người dùng hoặc nhóm có thể quản lý và thực hiện thao tác với 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ý việc mạo danh tài khoản dịch vụ.
  7. Nhấp vào Xong.

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 một khoá riêng tư

Để tạo khoá riêng tư 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 của Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.

    Chuyển đế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, sau đó nhấp vào Create (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 dưới dạng tệp mới. 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ữ an toàn khoá của bạ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ề các tài khoản dịch vụ, hãy xem tài khoản dịch vụ trong tài liệu IAM của Google Cloud.

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

Mã sau đây xác thực bằng API REST của Chat bằng tài khoản dịch vụ, sau đó đăng một tin nhắn lên phòng Chat:

Python

  1. Trong thư mục đang hoạt động, hãy tạo một tệp có tên là chat_app_auth.py.
  2. Đưa mã sau vào 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. Trong mã, hãy thay thế SPACE_NAME bằng tên không gian mà bạn có thể lấy được từ phương thức spaces.list trong API trò chuyện hoặc từ URL của một không gian.

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

Trong thư mục đang hoạt động, hãy tạo và chạy mẫu:

Python

python3 chat_app_auth.py

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

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

Phần này mô tả các vấn đề phổ biến 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 chat_app_auth.py, bạn có thể nhận được thông báo lỗi:

<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 đăng tin nhắn trò chuyện trong phòng Chat mà ứng dụng này đang cố gắng đăng.

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

Bước tiếp theo

Tìm hiểu những việc khác mà API Chat có thể làm bằng cách xem lại tài liệu tham khảo về API Chat.