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

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

Tổng quan về quy trình

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

Các bước nâng cao để xác thực và uỷ quyền trong Google Chat
Hình 1. Các bước nâng cao để xác thực và uỷ quyền trong Google Chat.

  1. Định cấu hình một dự án trê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 sẽ tạo một Dự án trên Google Cloud. Trong dự án Google Cloud, bạn bật Chat API, định cấu hình ứng dụng Chat và thiết lập tính năng xác thực. Để biết thêm thông tin, hãy xem Phát triển trên Google WorkspaceTạo ứng dụng Chat.

  2. Call Chat API: Khi ứng dụng của bạn gọi hàm Chat API này sẽ gửi thông tin xác thực đến 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ông tin đăng nhập sẽ được gửi dưới dạng trong mã của ứng dụng. Nếu ứng dụng của bạn yêu cầu gọi API Chat bằng cách sử dụng xác thực của người dùng chưa được cấp, nó sẽ nhắc người dùng để đă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 bằng phạm vi mà bạn chỉ định trong khi thiết lập 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à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 hay không quyền truy cập vào dữ liệu được yêu cầu. Việc xác thực bằng tài khoản dịch vụ không cần có sự đồng ý của người dùng.

  5. Gửi yêu cầu được phê duyệt về tài nguyên: 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 đăng nhập và thông tin người dùng phê duyệt phạm vi vào 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 chứa danh sách phạm vi đã cấp. Nếu danh sách phạm vi được trả về hạn chế hơn phạm vi đã yêu cầu, thì ứng dụng của bạn sẽ tắt mọi tính năng bị giới hạn theo mã thông báo.

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

  8. Lấy mã làm mới (không bắt buộc): Nếu ứng dụng của bạn phải truy cập vào API Google Chat ngoài vòng đời của một mã truy cập duy nhất, nó có thể nhận được mã làm mới. Để biết thêm thông tin, hãy xem Sử dụng OAuth 2.0 để truy cập Google API.

  9. Yêu cầu thêm tài nguyên: Nếu cần thêm quyền truy cập, ứ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 về việc lấy mã truy cập (các bước 3-6).

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

Các ứng dụng trong Chat có thể gửi tin nhắn để phản hồi một hoạt động tương tác của người dùng, hoặc một cách không đồng bộ. Họ cũng có thể hoàn thành các thao tác thay mặt người dùng, chẳng hạn như tạo phòng Chat hoặc lấy danh sách những người trong một Phòng Chat.

Các ứng dụng trong Chat không yêu cầu xác thực để phản hồi hoạt động tương tác của người dùng, trừ phi ứng dụng Chat gọi Chat API hoặc một API khác của Google trong khi đang xử lý một phản hồi.

Để gửi thông báo không đồng bộ hoặc thực hiện thao tác thay mặt người dùng, Các ứng dụng trong Chat gửi yêu cầu RESTful đến API Chat, yêu cầu xác thực và uỷ quyền.

Phản hồi cho tương tác của người dùng không yêu cầu xác thực

Các ứng dụng Google Chat không cần xác thực là người dùng hoặc Ứng dụng Chat để nhận và phản hồi đồng bộ với sự kiện tương tác.

Các ứng dụng Google Chat nhận được sự kiện tương tác bất cứ khi nào người dùng tương tác hoặc gọi một ứng dụng Chat, trong đó có:

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

Sơ đồ dưới đây biểu thị trình tự yêu cầu-phản hồi giữa một Người dùng Chat và ứng dụng Chat:

Các sự kiện tương tác trong ứng dụng Chat không cần được cho phép
Hình 2. Các sự kiện tương tác trong ứng dụng Chat 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 sau Google Chat.
  2. Google Chat sẽ chuyển tiếp tin nhắn đó đến ứng dụng.
  3. Ứng dụng nhận tin nhắn, xử lý và trả về phản hồi cho Google Chat.
  4. Google Chat hiển thị câu trả lờ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 lần tương tác với ứng dụng Chat sự kiện.

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

Tin nhắn không đồng bộ xảy ra khi ứng dụng Chat tạo yêu cầu đến API Chat, yêu cầu xác thực và uỷ quyền.

Bằng cách gọi API Chat, các ứng dụng trong Chat có thể đăng tin nhắn truy cập vào Google Chat hoặc hoàn thành công việc và truy cập vào dữ liệu thay mặt người dùng. Cho ví dụ: sau khi phát hiện sự cố ngừng dịch vụ của máy chủ, ứng dụng Chat có thể gọi hàm API Chat để:

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

Sơ đồ dưới đây minh hoạ chuỗi thông báo không đồng bộ giữa Ứng dụng Chat và phòng Chat:

Yêu cầu xác thực cho các thông báo không đồng bộ
Hình 3. Các thông báo không đồng bộ yêu cầu xác thực.

  1. Ứng dụng Chat tạo tin nhắn bằng cách gọi hàm API Chat bằng spaces.messages.create phương thức, và đưa thông tin đăng nhập của người dùng vào yêu cầu HTTP.
  2. Google Chat xác thực ứng dụng Chat 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 hiển thị tin nhắn của ứng dụng tới một Chat cụ thể .

Phạm vi của API Chat

Định cấu hình màn hình xin phép bằng OAuth và chọn phạm vi để xác định thông tin nào sẽ hiển thị cho người dùng và người đánh giá ứng dụng, cũng như đăng ký ứng dụng của bạn để bạn có thể xuất bản sau này.

Để 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 URI OAuth 2.0 chuỗi chứa tên ứng dụng trên Google Workspace, loại dữ liệu quyền truy cập và cấp truy cập.

Phạm vi không nhạy cảm

Mã phạm vi Mô tả
https://www.googleapis.com/auth/chat.bot

Phạm vi chat.bot chỉ hỗ trợ tài khoản dịch vụ. Bạn không thể xác thực bằng thông tin đăng nhập của người dùng hoặc bằng uỷ quyền trên toàn miền bằng phạm vi này.

Cho phép các ứng dụng trong Chat xem cuộc trò chuyện và gửi tin nhắn. Cho quyền sử dụng mọi tính năng dành cho ứng dụng Chat.

Phạm vi nhạy cảm

Mã phạm vi Mô tả
https://www.googleapis.com/auth/chat.spaces Tạo cuộc trò chuyện và không gian cũng như xem hoặc chỉnh sửa siêu dữ liệu (bao gồm chế độ cài đặt nhật ký và chế độ cài đặt quyền truy cập) trong Chat.
https://www.googleapis.com/auth/chat.spaces.create Tạo cuộc trò chuyện mới trong Chat.
https://www.googleapis.com/auth/chat.spaces.readonly Xem cuộc trò chuyện và không gian trong Chat.
https://www.googleapis.com/auth/chat.memberships Xem, thêm, cập nhật và xoá thành viên khỏi các cuộc trò chuyện trong Chat.
https://www.googleapis.com/auth/chat.memberships.app Thêm và xoá chính ứng dụng khỏi cuộc trò chuyện trong Google Chat.
https://www.googleapis.com/auth/chat.memberships.readonly Xem thành viên trong các cuộc trò chuyện trên Chat.
https://www.googleapis.com/auth/chat.messages.create Soạn và gửi tin nhắn trong Chat.
https://www.googleapis.com/auth/chat.messages.reactions Xem, thêm và xoá các biểu tượng cảm xúc đối với tin nhắn trong Chat.
https://www.googleapis.com/auth/chat.messages.reactions.create Thêm biểu tượng cảm xúc vào tin nhắn trong Chat.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Xem các lượt thể hiện cảm xúc đối với một tin nhắn trong Chat.
https://www.googleapis.com/auth/chat.users.readstate Xem và sửa đổi dấu thời gian đọc cuộc trò chuyện gần đây nhất trên Chat.
https://www.googleapis.com/auth/chat.users.readstate.readonly Xem thời gian đọc cuộc trò chuyện trên Chat lần gần đây nhất.
https://www.googleapis.com/auth/chat.admin.spaces.readonly Xem cuộc trò chuyện và không gian do miền của quản trị viên sở hữu trong Chat.
https://www.googleapis.com/auth/chat.admin.spaces Xem hoặc chỉnh sửa cuộc trò chuyện và không gian thuộc sở hữu của miền của quản trị viên trong Chat.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Xem thành viên và người quản lý trong các cuộc trò chuyện thuộc sở hữu của miền của quản trị viên trong Chat.
https://www.googleapis.com/auth/chat.admin.memberships Xem, thêm, cập nhật và xoá thành viên cũng như người quản lý trong các cuộc trò chuyện thuộc miền của quản trị viên trong Chat.

Phạm vi bị hạn chế

Mã phạm vi Mô tả
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 Chat.
https://www.googleapis.com/auth/chat.import Nhập không gian, tin nhắn và thành viên vào Chat. Cho thông tin khác, xem Cho phép các ứng dụng trong Chat nhập dữ liệu
https://www.googleapis.com/auth/chat.messages Xem, soạn, gửi, cập nhật và xoá thư, cũng như thêm, xem và xoá lượt bày tỏ cảm xúc với tin nhắn.
https://www.googleapis.com/auth/chat.messages.readonly Xem tin nhắn và lượt thể hiện cảm xúc trong Chat.
https://www.googleapis.com/auth/chat.admin.delete Xoá các cuộc trò chuyện và không gian thuộc sở hữu của miền của quản trị viên, đồng thời xoá quyền truy cập vào các tệp có liên quan trong Chat.

Các phạm vi trong các bảng trên cho biết độ nhạy của chúng, theo định nghĩa sau đây:

Nếu ứng dụng của bạn yêu cầu quyền truy cập vào bất kỳ API nào khác của Google, bạn có thể thêm các phạm vi đó của Google. Để biết thêm thông tin về các phạm vi API của Google, hãy xem bài viết Sử dụng OAuth 2.0 để Truy cập API của Google.

Để tìm hiểu thêm về phạm vi của API Google Workspace, hãy xem Định cấu hình màn hình xin phép bằng OAuth và chọn phạm vi.

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

Ứng dụng trong Chat có thể xác thực và uỷ quyền theo 2 cách 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 cho phép thông tin đăng nhập của người dùng, ứng dụng Chat có thể truy cập vào dữ liệu người dùng và hoàn tất hành động thay mặt người dùng. Phạm vi OAuth chỉ định dữ liệu và hành động được uỷ quyền.

Bằng việc uỷ quyền cho ứng dụng, ứng dụng Chat sẽ truy cập vào API dưới dạng ứng dụng sử dụng thông tin xác thực tài khoản dịch vụ. Luôn uỷ quyền cho ứng dụng sử dụng phạm vi uỷ quyền chat.bot.

Khi quyết định loại thông tin đăng nhập nào cần sử dụng cho một yêu cầu API cụ thể, Xin lưu ý rằng một số phương pháp API chỉ hỗ trợ một loại chứng chỉ danh tính. Nếu một phương thức API hỗ trợ cả hai thông tin xác thực, thì loại thông tin đăng nhập được dùng trong lệnh gọi sẽ ảnh hưởng đến kết quả được trả về:

  • Với việc uỷ quyền ứng dụng, các phương thức chỉ trả về các tài nguyên mà ứng dụng có thể truy cập.
  • Khi có sự cho phép của người dùng, các phương thức chỉ trả về tài nguyên mà người dùng có thể truy cập trong giao diện người dùng Chat.

Ví dụ: việc gọi phương thức ListSpaces bằng việc uỷ quyền ứng dụng sẽ trả về giá trị danh sách không gian chứa ứng dụng. Đang gọi ListSpaces bằng người dùng uỷ quyền sẽ trả về danh sách không gian có người dùng. Ngang bằng ứng dụng của bạn có thể sử dụng cả hai loại ủy quyền khi gọi phương thức API Chat, tuỳ thuộc vào chức năng mà bạn muốn.

Đối với các lệnh gọi API Chat không đồng bộ

Bảng sau đây liệt kê các phương thức API Chat và các phương thức được hỗ trợ phạm vi uỷ quyền:

Phương thức Có hỗ trợ xác thực người dùng Có hỗ trợ xác thực ứng dụng Phạm vi uỷ quyền được hỗ trợ
Không gian  
Tạo không gian Với Xác thực người dùng:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Thiết lập không gian Với Xác thực người dùng:
  • chat.spaces.create
  • chat.spaces
Mua không gian Với Xác thực người dùng:
  • chat.spaces.readonly
  • chat.spaces
Với Xác thực ứng dụng:
  • chat.bot
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.spaces.readonly
Liệt kê không gian Với Xác thực người dùng:
  • chat.spaces.readonly
  • chat.spaces
Với Xác thực ứng dụng:
  • chat.bot
Tìm kiếm không gian Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.spaces.readonly
Cập nhật không gian Với Xác thực người dùng:
  • chat.spaces
  • chat.import
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.spaces
Xoá không gian Với Xác thực người dùng:
  • chat.delete
  • chat.import
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.delete
Hoàn tất quy trình nhập một không gian Với Xác thực người dùng:
  • chat.import
Tìm tin nhắn trực tiếp Với Xác thực người dùng:
  • chat.spaces.readonly
  • chat.spaces
Với Xác thực ứng dụng:
  • chat.bot
Thành viên  
Tạo thành viên Với Xác thực người dùng:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.memberships
Đăng ký gói thành viên Với Xác thực người dùng:
  • chat.memberships.readonly
  • chat.memberships
Với Xác thực ứng dụng:
  • chat.bot
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.memberships.readonly
Thành viên trong danh sách Với Xác thực người dùng:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Với Xác thực ứng dụng:
  • chat.bot
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.memberships.readonly
Xoá thành viên Với Xác thực người dùng:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.memberships
Cập nhật gói thành viên Với Xác thực người dùng:
  • chat.memberships
  • chat.import
Với Xác thực người dùng bằng đặc quyền của quản trị viên:
  • chat.admin.memberships
Tin nhắn  
Tạo thông báo Với Xác thực người dùng:
  • chat.messages.create
  • chat.messages
  • chat.import
Với Xác thực ứng dụng:
  • chat.bot
Nhận tin nhắn Với Xác thực người dùng:
  • chat.messages.readonly
  • chat.messages
Với Xác thực ứng dụng:
  • chat.bot
Liệt kê tin nhắn Với Xác thực người dùng:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Cập nhật tin nhắn Với Xác thực người dùng:
  • chat.messages
  • chat.import
Với Xác thực ứng dụng:
  • chat.bot
Xoá thư Với Xác thực người dùng:
  • chat.messages
  • chat.import
Với Xác thực ứng dụng:
  • chat.bot
Bày tỏ cảm xúc  
Tạo phản ứng Với Xác thực người dùng:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Liệt kê các biểu tượng cảm xúc Với Xác thực người dùng:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Xoá một lượt thể hiện cảm xúc Với Xác thực người dùng:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Truyền thông và tệp đính kèm  
Tải nội dung nghe nhìn lên dưới dạng tệp đính kèm Với Xác thực người dùng:
  • chat.messages.create
  • chat.messages
  • chat.import
Tải nội dung nghe nhìn xuống Với Xác thực người dùng:
  • chat.messages.readonly
  • chat.messages
Với Xác thực ứng dụng:
  • chat.bot
Nhận tệp đính kèm tin nhắn Với Xác thực ứng dụng:
  • chat.bot
Trạng thái đọc của người dùng
Lấy trạng thái đọc không gian của người dùng Với Xác thực người dùng:
  • chat.users.readstate
  • chat.users.readstate.readonly
Cập nhật trạng thái đọc không gian của người dùng Với Xác thực người dùng:
  • chat.users.readstate
Lấy trạng thái đã đọc chuỗi tin nhắn của người dùng Với Xác thực người dùng:
  • chat.users.readstate
  • chat.users.readstate.readonly
Sự kiện của không gian
Nhận sự kiện trên không gian Với Xác thực người dùng:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly
Liệt kê các sự kiện của không gian Với Xác thực người dùng:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly

Đối với sự kiện tương tác với ứng dụng Chat

Bảng sau đây liệt kê những cách phổ biến mà người dùng tương tác với các ứng dụng trong Chat và liệu quá trình xác thực là bắt buộc hay được hỗ trợ:

Trường hợp Không yêu cầu xác thực Có hỗ trợ xác thực người dùng Có hỗ trợ xác thực ứng dụng
Nhận tin nhắn từ:
Sự kiện tương tác với ứng dụng Chat
Lệnh gọi lại Apps Script
Google Cloud Pub/Sub
Trả lời tin nhắn:
Đồng bộ, sử dụng sự kiện tương tác với ứng dụng Chat
Đồng bộ, sử dụng giá trị trả về của lệnh gọi lại Apps Script
Gửi tin nhắn mới:
Với các webhook đến