Xác thực và ủy quyền ứng dụng Chat cũng như yêu cầu API

Xác thực và uỷ quyền là những cơ chế dùng để xác minh danh tính và quyền truy cập vào tài nguyên tương ứng. Tài liệu này trình bày cách hoạt động của quy trình xác thực và uỷ quyền đối với ứng dụng Chat và yêu cầu API API.

Tổng quan về quy trình

Sơ đồ dưới đây cho thấy các bước xác thực và ủy quyền cấp cao đối với Google Chat:

Các bước cấp cao để xác thực và ủy quyền trong Google Chat
Hình 1. Các bước cấp cao để xác thực và ủy quyền trong Google Chat

  1. Định cấu hình dự án Google Cloud, bật API Chat và định cấu hình ứng dụng Chat: Trong quá trình phát triển, bạn cần tạo một dự án Google Cloud. Trong dự án Google Cloud, bạn bật API Chat, định cấu hình ứng dụng Chat và thiết lập phương thức xác thực.

  2. API Chat: Khi ứng dụng của bạn gọi API REST của Chat⁠ — thường xảy ra sau khi người dùng trong Google Chat gọi ứng dụng bằng cách nhắn tin cho ứng dụng đó, nhấp vào một nút trên thẻ hoặc ra lệnh dấu gạch chéo⁠ — ứng dụng sẽ gửi thông tin xác thực cho API Chat. Nếu ứng dụng của bạn xác thực bằng một tài khoản dịch vụ, thì thông tin đăng nhập sẽ được gửi trong mã của ứng dụng. Nếu ứng dụng của bạn xác thực với tư cách là người dùng thì người dùng đó có thể nhận được lời nhắc đăng nhập.

  3. Yêu cầu tài nguyên: Ứng dụng của bạn yêu cầu quyền truy cập với các phạm vi mà bạn chỉ định khi thiết lập phương thức xác thực.

  4. Yêu cầu sự đồng ý: Nếu ứng dụng của bạn đang xác thực với tư cách là người dùng, thì Google sẽ hiển thị một màn hình xin phép bằng OAuth để người dùng đó có thể quyết định có cấp cho ứng dụng của bạn quyền truy cập vào dữ liệu được yêu cầu hay không. Việc xác thực bằng tài khoản dịch vụ không yêu cầu người dùng phải đồng ý.

  5. Gửi yêu cầu tài nguyên được phê duyệt: Nếu người dùng đồng ý với phạm vi uỷ quyền, ứng dụng của bạn sẽ nhóm thông tin xác thực và phạm vi được người dùng phê duyệt thành một yêu cầu. Yêu cầu được gửi đến máy chủ uỷ quyền của Google để lấy mã truy cập.

  6. Google trả về một mã truy cập: Mã truy cập này chứa một danh sách phạm vi được cấp. Nếu danh sách phạm vi được trả về bị giới hạn nhiều hơn phạm vi được yêu cầu, thì ứng dụng của bạn sẽ tắt mọi tính năng bị mã thông báo giới hạn.

  7. Truy cập vào các tài nguyên được yêu cầu: Ứng dụng của bạn sử dụng mã truy cập của Google để gọi API Chat và truy cập vào các tài nguyên API Chat.

  8. Nhận mã làm mới (không bắt buộc): Nếu ứng dụng của bạn cần truy cập vào API Google Chat sau vòng đời của một mã truy cập, thì ứng dụng đó có thể nhận mã làm mới.

  9. Yêu cầu thêm tài nguyên: Nếu ứng dụng của bạn cần có thêm quyền truy cập, thì ứng dụng sẽ yêu cầu người dùng cấp các phạm vi mới, dẫn đến một yêu cầu mới để lấy mã truy cập (các bước 3–6).

Khi ứng dụng Chat yêu cầu xác thực

Các ứng dụng trò chuyện có thể nhắn tin cho Google Chat một cách đồng bộ hoặc không đồng bộ. Họ cũng có thể thay mặt người dùng hoàn thành những việc như tạo phòng Chat.

Tin nhắn đồng bộ không yêu cầu xác thực, trừ phi ứng dụng Chat gọi API REST của Chat hoặc một API khác của Google trong khi xử lý phản hồi.

Để gửi tin nhắn không đồng bộ hoặc hoạt động thay mặt người dùng, ứng dụng Chat sẽ yêu cầu RESTful đến API REST của Chat. API này yêu cầu xác thực và uỷ quyền.

Thư đồng bộ không yêu cầu xác thực

Tin nhắn đồng bộ là phản hồi cho sự kiện trong Chat. Các ứng dụng Google Chat có thể nhận và phản hồi các sự kiện sau khi được định cấu hình và phát hành trên trang cấu hình ứng dụng Chat mà không cần phải xác thực hoặc uỷ quyền.

Ví dụ về các sự kiện đồng bộ hoá trên Chat gồm có:

  • Một người dùng gửi tin nhắn đến một ứng dụng nhắn tin trong Google Chat.
  • Một người dùng đề cập đến một ứng dụng nhắn tin.
  • Người dùng gọi một trong các lệnh dấu gạch chéo của ứng dụng Chat.

Sơ đồ sau cho thấy trình tự phản hồi yêu cầu đồng bộ cơ bản giữa người dùng Chat và ứng dụng Chat:

Không cần cấp phép cho tin nhắn đồng bộ
Hình 2. Thư đồng bộ không yêu cầu xác thực

  1. Người dùng gửi tin nhắn đến ứng dụng Chat trong Google Chat.
  2. Google Chat sẽ chuyển tiếp tin nhắn tới ứng dụng.
  3. Ứng dụng sẽ nhận, xử lý và trả lời tin nhắn cho Google Chat.
  4. Google Chat hiển thị phản hồi cho người dùng hoặc trong một không gian.

Trình tự này lặp lại cho mỗi sự kiện Chat.

Thông báo không đồng bộ yêu cầu xác thực

Thông báo không đồng bộ xảy ra khi ứng dụng Chat gửi yêu cầu tới API REST của Chat. Yêu cầu này yêu cầu xác thực và uỷ quyền.

Bằng cách gọi API REST, ứng dụng Chat có thể đăng tin nhắn lên Google Chat hoặc hoàn thành việc cần làm và truy cập dữ liệu thay mặt người dùng. Ví dụ: sau khi phát hiện sự cố ngừng hoạt động của máy chủ, ứng dụng Chat có thể gọi API trò chuyện để:

  • Tạo một phòng Chat riêng để điều tra và khắc phục sự cố ngừng hoạt động.
  • Thêm người vào phòng Chat.
  • Đăng tin nhắn lên phòng Chat để cung cấp thông tin chi tiết về sự cố ngừng hoạt động.

Sơ đồ sau cho thấy trình tự tin nhắn không đồng bộ cơ bản giữa ứng dụng Chat và phòng Chat:

Yêu cầu xác thực đối với thư không đồng bộ
Hình 3. Thông báo không đồng bộ yêu cầu xác thực

  1. Ứng dụng nhắn tin tạo một thông báo bằng cách gọi API REST của Chat bằng phương thức spaces.notifications.create và bao gồm thông tin xác thực tài khoản dịch vụ trong yêu cầu HTTP.
  2. Google Chat xác thực ứng dụng nhắn tin bằng tài khoản dịch vụ hoặc thông tin xác thực của người dùng.
  3. Google Chat sẽ hiển thị tin nhắn của ứng dụng với một phòng Chat được chỉ định.

Phạm vi API trò chuyện

Để xác định cấp truy cập được cấp cho ứng dụng của mình, bạn cần xác định và khai báo phạm vi uỷ quyền. Phạm vi uỷ quyền là một chuỗi URI OAuth 2.0, chứa tên ứng dụng Google Workspace, loại dữ liệu mà mã này truy cập và cấp truy cập.

Google Chat hỗ trợ các phạm vi sau:

Phạm vi API Google Chat Nội dung mô tả
https://www.googleapis.com/auth/chat.bot Cho phép các ứng dụng nhắn tin xem cuộc trò chuyện và gửi tin nhắn.
https://www.googleapis.com/auth/chat.delete Xoá các cuộc trò chuyện và không gian, đồng thời xoá quyền truy cập vào các tệp được liên kết trong Google Chat.
Hội viên  
https://www.googleapis.com/auth/chat.memberships Xem, thêm và xoá thành viên khỏi cuộc trò chuyện trong Google Chat.
https://www.googleapis.com/auth/chat.memberships.app Cho phép ứng dụng Chat tự thêm và xoá chính ứng dụng này (chứ không phải các ứng dụng khác) vào và khỏi cuộc trò chuyện trong Google Chat.
Tin nhắn  
https://www.googleapis.com/auth/chat.messages Tạo, nhận, cập nhật, xoá và liệt kê tin nhắn trong Google Chat.
https://www.googleapis.com/auth/chat.messages.reactions Xem, thêm và xoá các phản ứng đối với tin nhắn trong Google Chat.
https://www.googleapis.com/auth/chat.messages.reactions.create Thêm các biểu tượng cảm xúc vào tin nhắn trong Google Chat.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Xem phản ứng đối với tin nhắn trong Google Chat.
https://www.googleapis.com/auth/chat.messages.readonly Nhận và liệt kê tin nhắn trong Google Chat.
Không gian  
https://www.googleapis.com/auth/chat.spaces Tạo cuộc trò chuyện và không gian cũng như xem hoặc cập nhật siêu dữ liệu (bao gồm cả chế độ cài đặt nhật ký) trong Google Chat.
https://www.googleapis.com/auth/chat.spaces.create Tạo cuộc trò chuyện trong Google Chat.
https://www.googleapis.com/auth/chat.spaces.readonly Xem cuộc trò chuyện và các không gian trong Google Chat.

Để tìm hiểu thêm về phạm vi cho API Google Workspace, hãy xem bài viết Cách chọn phạm vi cho ứng dụng.

Để biết danh sách các phạm vi có sẵn, hãy xem phần Phạm vi OAuth 2.0 cho API Google.

Các loại xác thực bắt buộc

Có 2 cách để ứng dụng Chat có thể xác thực và ủy quyền bằng API Chat: thông tin đăng nhập của người dùng hoặc tài khoản dịch vụ.

Khi được người dùng uỷ quyền, thông tin đăng nhập của ứng dụng Chat có thể truy cập vào dữ liệu người dùng đã chỉ định và hoàn thành những thao tác cụ thể thay mặt người dùng. Dữ liệu và hành động được ủy quyền được chỉ định theo phạm vi.

Khi được uỷ quyền tài khoản dịch vụ, ứng dụng Chat sẽ truy cập API dưới dạng một ứng dụng sử dụng thông tin đăng nhập của tài khoản dịch vụ.

Nếu là quản trị viên miền, bạn có thể cấp 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 truy cập 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 việc ủ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ụ của mình để mạo danh tài khoản người dùng. Mặc dù tài khoản dịch vụ được dùng để xác thực, nhưng việc uỷ quyền trên toàn miền 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 xác thực người dùng, bạn đều có thể sử dụng tính năng uỷ quyền trên toàn miền.

Bảng sau đây liệt kê các trường hợp phổ biến mà các ứng dụng Chat gặp phải, ứng dụng Chat có yêu cầu xác thực hay không và nếu có thì thuộc loại nào:

Trường hợp Không yêu cầu xác thực Hỗ trợ Xác thực người dùng Hỗ trợ tài khoản dịch vụ
Nhận tin nhắn từ:
Sự kiện trò chuyện
Các lệnh gọi lại Apps Script
Pub/Sub của Google Cloud
Trả lời tin nhắn:
Đồng bộ, thông qua một sự kiện Chat
Đồng bộ, thông qua giá trị trả về của Apps Script
Không đồng bộ, thông qua API REST của Chat
Gửi tin nhắn mới
webhook đến
Bằng API REST của Chat
Cách tạo phòng Chat:
Bằng API REST của Chat
Thêm người dùng và ứng dụng vào phòng Chat:
Bằng API REST của Chat

Bước tiếp theo

Thiết lập phương thức xác thực và uỷ quyền bằng thông tin xác thực của người dùng hoặc một tài khoản dịch vụ.