Xác thực và ủy quyền người dùng

Hướng dẫn này giải thích cách sử dụng OAuth 2.0 với thông tin đăng nhập Google của người dùng để truy cập vào API Chat. Việc xác thực và uỷ quyền bằng thông tin xác thực người dùng cho phép các ứng dụng Chat truy cập vào dữ liệu người dùng và thực hiện thao tác thay mặt người dùng đã xác thực. Khi xác thực thay mặt người dùng, ứng dụng sẽ có các quyền tương tự như người dùng đó và có thể thực hiện các thao tác như thể người dùng đã thực hiện. Tuy nhiên, bạn không thể phát hành công khai các ứng dụng Chat này. Để biết thêm thông tin, hãy xem bài viết Phát hành ứng dụng Google Chat.

Sau khi xác thực và ủy quyền cho một lệnh gọi API bằng thông tin xác thực của người dùng, các ứng dụng Chat có thể làm những việc sau:

  • Tạo phòng Chat.
  • Thêm người dùng vào phòng Chat và cuộc trò chuyện nhóm.
  • Làm việc với dữ liệu người dùng trong các API Workspace khác, chẳng hạn như sau:

Khi ứng dụng thực hiện một thao tác có xác thực người dùng (chẳng hạn như tạo không gian), Google Chat sẽ hiển thị thông báo phân bổ cho người dùng biết tên của ứng dụng đã thực hiện thao tác đối với người dùng đã ủy quyền ứng 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 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.

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 bạn định cấu hình tính năng ủy quyền trên toàn miền, tài khoản dịch vụ có thể 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.

Để sử dụng API Google Chat để truy cập hoặc sửa đổi tài nguyên của một tổ chức Google Workspace, người dùng phải là thành viên của tổ chức đó. Người dùng bên ngoài hoặc người dùng không có tài khoản Google Workspace có quyền truy cập vào Google Chat sẽ không được hỗ trợ.

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

Python

Bước 1: Cài đặt thư viện ứng dụng Google

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

Python

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client

Bạn có thể sử dụng bất kỳ ngôn ngữ nào được thư viện ứng dụng của chúng tôi hỗ trợ.

Bước 2: Định cấu hình màn hình đồng ý OAuth, chỉ định phạm vi và đăng ký ứng dụng của bạn

Khi bạn sử dụng OAuth 2.0 để uỷ quyền, Google sẽ hiển thị một màn hình xin phép cho người dùng, bao gồm bản tóm tắt về dự án, chính sách và các phạm vi uỷ quyền đã yêu cầu. Việc định cấu hình màn hình lấy sự đồng ý OAuth của ứng dụng sẽ xác định nội dung mà Google hiển thị cho người dùng và người đánh giá ứng dụng, đồng thời đăng ký ứng dụng của bạn để bạn có thể phát hành ứng dụng sau.

Tất cả ứng dụng sử dụng OAuth 2.0 đều yêu cầu cấu hình màn hình đồng ý, nhưng bạn chỉ cần liệt kê phạm vi cho các ứng dụng mà những người bên ngoài tổ chức Google Workspace của bạn sử dụng.

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Màn hình xin phép OAuth.

    Chuyển đến màn hình xin phép bằng OAuth

  2. Chọn loại người dùng cho ứng dụng của bạn, sau đó nhấp vào Tạo.

  3. Hoàn tất biểu mẫu đăng ký ứng dụng, sau đó nhấp vào Lưu và tiếp tục.

  4. Nhấp vào Thêm hoặc xoá phạm vi. Thêm và xác minh phạm vi ủy quyền mà ứng dụng yêu cầu, nhấp vào Cập nhật, sau đó nhấp vào Lưu và tiếp tục.

  5. Xem lại tóm tắt đăng ký ứng dụng của bạn. Nhấp vào Edit (Chỉnh sửa) để thay đổi hoặc nhấp vào Back to Dashboard (Quay lại trang tổng quan).

Bước 3: Tạo thông tin xác thực mã ứng dụng khách OAuth trong Google Cloud Console

Để xác thực là người dùng cuối và truy cập dữ liệu người dùng trong ứng dụng, bạn cần tạo một hoặc nhiều Mã ứng dụng khách OAuth 2.0. Mã ứng dụng khách được dùng để xác định một ứng dụng với máy chủ OAuth của Google. Nếu ứng dụng của bạn chạy trên nhiều nền tảng—như Android, iOS và Web—bạn cần tạo một mã ứng dụng khách riêng cho từng nền tảng.

Tạo thông tin xác thực ID ứng dụng khách OAuth

Chọn loại ứng dụng để biết hướng dẫn cụ thể về cách tạo mã ứng dụng khách OAuth:

Ứng dụng web

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > Ứng dụng web.
  4. Trong trường Tên, nhập tên cho thông tin đăng nhập. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Thêm URI được ủy quyền liên quan đến ứng dụng của bạn:
    • Ứng dụng phía máy khách (JavaScript) – Trong Nguồn JavaScript được ủy quyền, hãy nhấp vào Thêm URI. Sau đó, hãy nhập một URI để sử dụng cho các yêu cầu của trình duyệt. Phần này xác định các miền mà từ đó ứng dụng của bạn có thể gửi yêu cầu API đến máy chủ OAuth 2.0.
    • Ứng dụng phía máy chủ (Java, Python và các ứng dụng khác) – Trong URI chuyển hướng được ủy quyền, hãy nhấp vào Thêm URI. Sau đó, nhập một URI điểm cuối mà máy chủ OAuth 2.0 có thể gửi phản hồi tới.
  6. Nhấp vào Tạo. Màn hình ứng dụng OAuth được tạo sẽ hiển thị mã ứng dụng khách và khóa bí mật của ứng dụng mới.

    Ghi lại Client ID. Mật khẩu ứng dụng khách không được sử dụng cho các ứng dụng Web.

  7. Nhấp vào OK. Thông tin đăng nhập mới tạo sẽ xuất hiện trong ID ứng dụng khách OAuth 2.0.

Android

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > Android.
  4. Trong trường "Tên", nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Trong trường "Package name" (Tên gói), hãy nhập tên gói trong tệp AndroidManifest.xml.
  6. Trong trường "vân tay số chứng chỉ SHA-1", hãy nhập vân tay số chứng chỉ SHA-1 đã tạo.
  7. Nhấp vào Tạo. Màn hình ứng dụng khách OAuth được tạo sẽ xuất hiện, hiển thị Mã ứng dụng khách mới của bạn.
  8. Nhấp vào OK. Thông tin xác thực mới được tạo xuất hiện trong "ID ứng dụng khách OAuth 2.0".

iOS

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > iOS.
  4. Trong trường "Tên", nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Trong trường "Bundle ID" (Mã gói), hãy nhập giá trị nhận dạng gói như trong tệp Info.plist của ứng dụng.
  6. Tùy chọn: Nếu ứng dụng của bạn xuất hiện trong Apple App Store, hãy nhập ID App Store.
  7. Không bắt buộc: Trong trường "Mã nhóm", hãy nhập chuỗi ký tự duy nhất gồm 10 ký tự do Apple tạo và gán cho nhóm của bạn.
  8. Nhấp vào Tạo. Màn hình ứng dụng OAuth được tạo sẽ hiển thị mã ứng dụng khách và khóa bí mật của ứng dụng mới.
  9. Nhấp vào OK. Thông tin xác thực mới được tạo xuất hiện trong "ID ứng dụng khách OAuth 2.0".

Ứng dụng Chrome

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > Ứng dụng Chrome.
  4. Trong trường "Tên", nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Trong trường "Mã ứng dụng", hãy nhập chuỗi mã gồm 32 ký tự duy nhất của ứng dụng. Bạn có thể tìm thấy giá trị ID này trong URL Cửa hàng Chrome trực tuyến của ứng dụng và trong Trang tổng quan dành cho nhà phát triển Cửa hàng Chrome trực tuyến.
  6. Nhấp vào Tạo. Màn hình ứng dụng OAuth được tạo sẽ hiển thị mã ứng dụng khách và khóa bí mật của ứng dụng mới.
  7. Nhấp vào OK. Thông tin xác thực mới được tạo xuất hiện trong "ID ứng dụng khách OAuth 2.0".

Ứng dụng dành cho máy tính

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > Ứng dụng dành cho máy tính để bàn.
  4. Trong trường Tên, nhập tên cho thông tin đăng nhập. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Nhấp vào Tạo. Màn hình ứng dụng OAuth được tạo sẽ hiển thị mã ứng dụng khách và khóa bí mật của ứng dụng mới.
  6. Nhấp vào OK. Thông tin đăng nhập mới tạo sẽ xuất hiện trong ID ứng dụng khách OAuth 2.0.

TV và thiết bị đầu vào giới hạn

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Loại ứng dụng > TV và thiết bị đầu vào giới hạn.
  4. Trong trường "Tên", nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Nhấp vào Tạo. Màn hình ứng dụng OAuth được tạo sẽ hiển thị mã ứng dụng khách và khóa bí mật của ứng dụng mới.
  6. Nhấp vào OK. Thông tin xác thực mới được tạo xuất hiện trong "ID ứng dụng khách OAuth 2.0".

Universal Windows Platform (UWP)

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Nhấp vào Application type (Loại ứng dụng) > Universal Windows Platform (UWP).
  4. Trong trường "Tên", nhập tên cho thông tin xác thực. Tên này chỉ hiển thị trong bảng điều khiển Google Cloud.
  5. Trong trường "ID cửa hàng", hãy nhập giá trị ID Microsoft Store gồm 12 ký tự duy nhất của ứng dụng. Bạn có thể tìm thấy ID này trong URL Microsoft Store của ứng dụng và trong Trung tâm đối tác.
  6. Nhấp vào Tạo. Màn hình ứng dụng OAuth được tạo sẽ hiển thị mã ứng dụng khách và khóa bí mật của ứng dụng mới.
  7. Nhấp vào OK. Thông tin xác thực mới được tạo xuất hiện trong "ID ứng dụng khách OAuth 2.0".

Tải xuống tệp JSON chứa mật khẩu ứng dụng khách

Tệp mật khẩu ứng dụng là một bản trình bày JSON về thông tin xác thực mã ứng dụng khách OAuth mà ứng dụng Chat của bạn có thể tham chiếu khi cung cấp thông tin xác thực.

  1. Trong Google Cloud Console, chuyển đến Trình đơn > API và dịch vụ > Thông tin đăng nhập.

    Chuyển đến Thông tin đăng nhập

  2. Trong ID ứng dụng khách OAuth 2.0, nhấp vào ID ứng dụng bạn đã tạo.

  3. Nhấp vào Tải JSON xuống.

  4. Lưu tệp dưới dạng client_secrets.json.

Bước 4: Viết tập lệnh gọi API trò chuyện

Mã sau đây sử dụng thư viện ứng dụng để gọi API Chat. Tính năng này xác thực bằng API Chat bằng thông tin xác thực mã ứng dụng khách OAuth, sau đó tạo một không gian.

Lưu mã sau vào tệp có tên chat_space_create_named.py trong cùng thư mục chứa client_secrets.json:

Python

from __future__ import print_function

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# Define your app's authorization scopes.
# When modifying these scopes, delete the file token.json, if it exists.
SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then creates a Chat space.
    '''

    flow = InstalledAppFlow.from_client_secrets_file(
                      'client_secrets.json', SCOPES)
    creds = flow.run_local_server()

    # Build a service endpoint for Chat API.
    service = build('chat', 'v1', credentials=creds)

    # Use the service endpoint to call Chat API.
    result = service.spaces().create(

      # Details about the space to create.
      body = {

        # To create a named space, set spaceType to SPACE.
        'spaceType': 'SPACE',

        # The user-visible name of the space.
        'displayName': 'API-made'
      }

      ).execute()

    # Prints details about the created membership.
    print(result)

if __name__ == '__main__':
    main()

Bước 5: Chạy tập lệnh mẫu

Để chạy ví dụ, từ dòng lệnh, hãy chuyển đến thư mục chứa chat_space_create_named.pyclient_secrets.json, sau đó thực thi lệnh sau:

Python

python3 chat_space_create_named.py

Một trình duyệt mở ra và nhắc bạn đăng nhập vào Tài khoản Google của bạn:

Đăng nhập để cấp quyền cho ứng dụng Chat.

Hình 1. Màn hình xin phép bằng OAuth, nơi bạn chọn tài khoản để xác thực ứng dụng.

Sau khi bạn đăng nhập, màn hình xin phép bằng OAuth sẽ xuất hiện và yêu cầu bạn cấp quyền cho ứng dụng.

Sau khi bạn cấp quyền, tập lệnh sẽ gọi API Chat. API này phản hồi bằng cách thêm ứng dụng Chat vào một phòng Chat. Bảng điều khiển sẽ in thông tin chi tiết về lệnh gọi API.

Gỡ rối ví dụ

Khi chạy chat_space_create_named.py, bạn có thể gặp lỗi:

Expected a JSON object with a single property for a "web" or "installed" application

Thông báo lỗi này có nghĩa là tệp client_secrets.json mà bạn đã tải xuống từ Google Cloud Console không bắt đầu bằng thuộc tính "web" hoặc "installed". Sau khi xác thực bằng tệp đã tải xuống, nếu mã của bạn không lưu mã truy cập trong một tệp mới như token.json, thì mã truy cập sẽ được ghi vào client_secrets.json. Điều này có thể gây ra lỗi này trong các lần uỷ quyền tiếp theo.

Để khắc phục lỗi này, hãy tải lại tệp bí mật ứng dụng khách từ bảng điều khiển Google Cloud và lưu tệp mới vào vị trí của tệp hiện tại.

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.