Tài liệu 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 một ứng dụng nhắn tin. Trước tiên, tài liệu 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 bằ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 tới Google Chat bằng
spaces.messages.create
đến:- Thông báo cho người dùng khi công việc trong nền chạy trong thời gian dài kết thúc.
- Thông báo cho người dùng rằng máy chủ đã ngoại tuyến.
- Yêu cầu nhân viên hỗ trợ khách hàng giải quyết một trường hợp khách hàng mới mở.
- Cập nhật các thông báo đã gửi trước đó bằng
spaces.messages.update
thành:- Thay đổi trạng thái trên đang hoạt động.
- Cập nhật người được giao của công việc hoặc ngày hoàn thành.
- Liệt kê người dùng trong không gian có
spaces.members.list
để:- Xem ai ở trong một không gian.
- Xác minh tư cách 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 thao tác trong phòng Chat, các ứng dụng Chat phải có tư cách 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ủ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 mặt người dùng, hãy xác thực với tư cách là người dùng.
Nếu là quản trị viên miền, bạn có thể cấp ủy quyền trên toàn miền để ủy quyền cho tài khoản dịch vụ của ứng dụng truy cập vào dữ liệu của người dùng mà không cần yêu cầu từng người dùng đồng ý. Sau khi định cấu hình tính năng ủy quyền trên toàn miền, bạn có thể thực hiện các lệnh gọi API bằng tài khoản dịch vụ để mạo danh một tài khoản người dùng. Mặc dù tài khoản dịch vụ được sử dụng để xác thực, nhưng việc ủy quyền trên toàn miền sẽ mạo danh người dùng và do đó được coi là xác thực người dùng. Bất kỳ chức năng nào yêu cầu người dùng xác thực, bạn có thể sử dụng tính năng ủy 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 nên sử dụng, hãy xem bài viết 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à ủy quyền API Chat.
Điều kiện tiên quyết
Để chạy ví dụ trong hướng dẫn này, bạn cần điều kiện tiên quyết sau đây:
Python
- Python
- Công cụ quản lý gói pip
Thư viện ứng dụng Python của Google. Để cài đặt tiện ích, hãy chạy lệnh sau trong giao diện dòng lệnh:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Tài khoản Google Workspace có quyền truy cập vào Google Chat.
Một dự án Google Cloud đã bật API Chat. Để tạo dự án và bật API, hãy tham khảo bài viết Tạo dự án và bật API.
Một ứng dụng Chat đã phát hành có tính năng hội viên trong phòng Chat:
- Để tạo và phát hành ứng dụng Chat, hãy xem phần Tạo ứng dụng Google Chat bằng Chức năng đám mây.
- Để thêm ứng dụng Chat vào phòng Chat, hãy xem phần Thêm ứng dụng vào không gian hoặc cuộc trò chuyện trong Google Chat.
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 API 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:
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.
- Nhấp vào Tạo tài khoản dịch vụ.
- Đ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.
- Không bắt buộc: Chỉ định vai trò cho tài khoản dịch vụ để cấp quyền truy cập vào tài nguyên của dự án trên Google Cloud. Để biết thêm 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.
- Nhấp vào Tiếp tục.
- Tùy chọn: Nhập người dùng hoặc nhóm có thể quản lý và thực hiện hành động bằng tài khoản dịch vụ này. Để biết thêm chi tiết, hãy tham khảo bài viết Quản lý mạo danh tài khoản dịch vụ.
- Nhấp vào Xong. Ghi lại địa chỉ email cho tài khoản dịch vụ.
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 khóa riêng tư
Để tạo khóa riêng tư cho tài khoản dịch vụ, hãy làm theo các bước sau:
- Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.
- Chọn tài khoản dịch vụ của bạn.
- Nhấp vào Khóa > Thêm khóa > Tạo khóa mới.
- Chọn JSON, sau đó nhấp vào Tạo.
Cặp khóa 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 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ữ khóa an toàn, hãy xem phần Quản lý khóa tài khoản dịch vụ.
- Nhấp vào Close (Đóng).
Để biết thêm thông tin về tài khoản dịch vụ, hãy xem tài khoản dịch vụ trong tài liệu của IAM về 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 thông báo lên phòng Chat:
Python
- Trong thư mục đang làm việc, hãy tạo một tệp có tên là
chat_app_auth.py
. Đư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)
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ứcspaces.list
trong API Chat hoặc từ URL của không gian.
Bước 3: Chạy ví dụ hoàn chỉnh
Trong thư mục đang làm việc, hãy tạo và chạy mẫu:
Python
python3 chat_app_auth.py
Tập lệnh sẽ gửi yêu cầu được xác thực tới API REST của Chat. API này phản hồi bằng cách đăng tin nhắn trong phòng Chat dưới dạng ứng dụng Chat.
Gỡ rối ví dụ
Phần này mô tả các vấn đề phổ biến mà bạn có thể gặp phải trong quá trình 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ể gặp 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 trong ứng dụng Chat trong phòng Chat mà ứng dụng đang cố đăng lên đó.
Để 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 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 tài liệu tham khảo về API Chat.