Hướng dẫn về khái niệm liên kết trong quy trình Đăng nhập bằng Google bằng OAuth "Đơn giản hoá"

Loại liên kết "Đơn giản hoá" đăng nhập bằng Google dựa trên OAuth sẽ thêm tính năng Đăng nhập bằng Google ở đầu liên kết tài khoản dựa trên OAuth. Nếu bạn sử dụng loại liên kết này trong Hành động của mình, thì quy trình sẽ bắt đầu bằng tính năng Đăng nhập bằng Google, cho phép bạn kiểm tra xem thông tin hồ sơ trên Google của người dùng có tồn tại trong hệ thống của bạn hay không. Nếu không, một quy trình OAuth tiêu chuẩn sẽ bắt đầu. Bằng cách cung cấp kết hợp 2 loại liên kết này, người dùng có thể liên kết danh tính của họ trong Hành động của bạn với Tài khoản Google hoặc Tài khoản không phải của Google. Nếu muốn, họ cũng có thể tạo một tài khoản mới bằng thông tin hồ sơ trên Google của mình.

Liên kết đơn giản là giải pháp liên kết tài khoản được đề xuất nếu thuộc bất kỳ trường hợp nào sau đây:

  • Bạn có một Hành động trên nhiều nền tảng (ví dụ: nếu Hành động đó hoạt động trên một ứng dụng Android).
  • Bạn hiện có một hệ thống xác thực và muốn cho phép người dùng liên kết danh tính của họ với các tài khoản không phải của Google. Ví dụ: nếu bạn cung cấp một chương trình khách hàng thân thiết và muốn đảm bảo rằng người dùng không bị mất số điểm đã tích luỹ trên tài khoản hiện tại của họ.

Để xác minh rằng đường liên kết được tinh giản là giải pháp phù hợp với bạn, hãy xem trang Chọn loại liên kết tài khoản.

Từ khóa

Trước khi bạn đọc về cách hoạt động của Đường liên kết được tinh giản, hãy tự làm quen với các thuật ngữ sau:

  • Mã thông báo giá trị nhận dạng của Google: Xác nhận đã ký về danh tính của người dùng có chứa thông tin cơ bản trong hồ sơ của người dùng trên Google (tên, địa chỉ email và ảnh hồ sơ của họ). Mã thông báo giá trị nhận dạng của Google là một Mã thông báo web JSON (JWT). Sau đây là ví dụ về một mã thông báo đã giải mã:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • user.verificationStatus: Một thuộc tính do hệ thống đặt để cho biết liệu phiên hiện tại có người dùng đã xác minh hay không.

  • user.accountLinkingStatus: Một thuộc tính do hệ thống đặt để cho biết liệu người dùng trong phiên hiện tại có danh tính được liên kết hay không.

  • Cảnh hệ thống liên kết tài khoản: Một cảnh được xác định trước, triển khai quy trình xác nhận cho việc liên kết tài khoản, và có thể được tuỳ chỉnh để phù hợp với các trường hợp sử dụng cụ thể.

  • Quy trình mã uỷ quyền: Quy trình OAuth 2.0 mà bạn có thể triển khai bằng quy trình liên kết được tinh giản. Quy trình này yêu cầu 2 điểm cuối:

    • Điểm cuối uỷ quyền: Điểm cuối hiển thị giao diện người dùng đăng nhập cho những người dùng chưa đăng nhập. Hồ sơ này ghi lại sự đồng ý đối với hoạt động truy cập được yêu cầu dưới dạng mã uỷ quyền ngắn hạn.
    • Điểm cuối trao đổi mã thông báo: Điểm cuối này chịu trách nhiệm về 2 loại trao đổi:
      1. Trao đổi mã uỷ quyền lấy mã làm mới dài hạn và mã truy cập ngắn hạn. Quá trình trao đổi này xảy ra khi người dùng thực hiện quy trình liên kết tài khoản.
      2. Trao đổi mã thông báo làm mới dài hạn lấy một mã truy cập ngắn hạn. Quá trình trao đổi này xảy ra khi Google cần một mã truy cập mới vì mã này đã hết hạn.
  • Quy trình mã ngầm ẩn: Quy trình OAuth 2.0 mà bạn có thể triển khai bằng quy trình Liên kết đơn giản. Quy trình này chỉ yêu cầu một điểm cuối uỷ quyền. Trong quy trình này, Google sẽ mở điểm cuối uỷ quyền của bạn trong trình duyệt của người dùng. Nếu đăng nhập thành công, bạn sẽ trả về một mã truy cập dài hạn cho Google. Mã truy cập này hiện có trong mọi yêu cầu mà Trợ lý gửi đến Hành động của bạn.

  • Mã truy cập: Mã thông báo cho phép dịch vụ của bạn truy cập vào các phần trong dữ liệu của người dùng. Mã truy cập được liên kết với từng người dùng riêng lẻ.

  • Mã thông báo làm mới: Mã thông báo được đổi lấy mã truy cập mới sau khi mã truy cập tồn tại trong một thời gian ngắn hết hạn.

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

Để sử dụng loại hình liên kết Đơn giản hoá, bạn cần có những yếu tố sau:

  • Máy chủ OAuth 2.0
  • Điểm cuối trao đổi mã thông báo

    Điểm cuối trao đổi mã thông báo phải được mở rộng để hỗ trợ các giao thức của Google dành cho việc tự động liên kết và tạo tài khoản từ mã thông báo (tức là thêm các tham số intent=getintent=create trong các yêu cầu đến điểm cuối này).

Cách thức hoạt động

Phần này mô tả quy trình chung cho quy trình liên kết Đơn giản hoá. Phần sau đây, Quy trình liên kết được đơn giản hoá, mô tả các quy trình khác nhau có thể xảy ra dựa trên a) cho dù bạn bật hay tắt tính năng tạo tài khoản thông qua giọng nói và b) việc bạn có sử dụng quy trình mã ngầm ẩn hay quy trình uỷ quyền hay không.

Quy trình cơ bản như sau:

  1. Hành động của bạn đề nghị người dùng đồng ý truy cập vào Hồ sơ của họ trên Google.
  2. Sau khi người dùng đồng ý, Hành động của bạn sẽ nhận được mã thông báo giá trị nhận dạng của Google có chứa thông tin trong hồ sơ Google của người dùng.
  3. Bạn phải xác thực và giải mã mã thông báo để đọc nội dung hồ sơ.
  4. Hành động của bạn sử dụng mã thông báo này để kiểm tra xem thông tin hồ sơ của người dùng trên Google có tồn tại trong hệ thống của bạn hay không.
    1. Nếu có, người dùng đã đăng nhập vào hệ thống của bạn bằng Tài khoản Google của họ. Trợ lý sẽ liên kết danh tính của người dùng với Tài khoản Google của họ. Người dùng có thể tiếp tục trò chuyện với Trợ lý bằng tài khoản của họ đã liên kết.
    2. Nếu không, hãy xem bước 5.
  5. Người dùng có thể a) tạo một tài khoản mới bằng thông tin hồ sơ trên Google của họ hoặc b) đăng nhập vào hệ thống của bạn bằng một tài khoản khác. Các lựa chọn mà người dùng đưa ra sẽ khác nhau tuỳ thuộc vào việc bạn bật hoặc tắt tính năng tạo tài khoản qua giọng nói. Nếu người dùng chọn đăng nhập vào hệ thống của bạn bằng một tài khoản khác, thì quy trình OAuth tiêu chuẩn sẽ bắt đầu.
  6. Sau khi người dùng tạo tài khoản mới hoặc đăng nhập bằng một nhà cung cấp khác, dịch vụ của bạn sẽ trả về mã truy cập cho Google. (Nếu bạn đang sử dụng quy trình mã uỷ quyền, dịch vụ của bạn cũng sẽ trả về một mã làm mới.)
  7. Giờ đây, người dùng có thể tiếp tục trò chuyện với Trợ lý bằng tài khoản đã liên kết.

Đơn giản hoá quy trình liên kết

Phần này trình bày các quy trình có thể xảy ra với phương thức Liên kết đơn giản. Những sơ đồ này xem xét các luồng xảy ra với quy trình mã uỷ quyền thay vì luồng mã ngầm ẩn và giả sử bạn đang sử dụng Trình tạo hành động.

Mỗi luồng chứa các bước phổ biến sau đây sau khi người dùng gọi Hành động của bạn:

Trong quy trình trên, bạn sẽ chuyển sang cảnh hệ thống liên kết tài khoản và đưa ra lý do tuỳ chỉnh. Cảnh này yêu cầu người dùng cấp quyền truy cập vào thông tin hồ sơ trên Google của họ. Sau khi người dùng đồng ý, Trợ lý sẽ gửi một yêu cầu chứa thông tin hồ sơ của user@gmail.com.

Các luồng sau thời điểm này khác nhau tuỳ thuộc vào việc bạn có định cấu hình tính năng liên kết tài khoản với giọng nói hay không và liệu thông tin của người dùng đã có trong hệ thống của bạn hay chưa. Mỗi quy trình này được mô tả trong các phần sau đây.

Quy trình có bật tính năng tạo tài khoản bằng giọng nói

Phần này trình bày chi tiết các quy trình liên kết tài khoản có thể xảy ra nếu bạn bật tính năng tạo tài khoản thông qua giọng nói.

Luồng 1: Thông tin của người dùng có trong hệ thống của bạn

Trong trường hợp này, người dùng do user@gmail.com đại diện đã tồn tại trong phần phụ trợ, vì vậy, điểm cuối trao đổi mã thông báo của bạn sẽ trả về mã thông báo cho người dùng. Danh tính người dùng trong Hành động của bạn hiện đã được liên kết với Tài khoản Google của họ. Yêu cầu ban đầu của người dùng (“Đặt hàng thông thường”) khớp với ý định của người dùng order_drink. Sau đó, webhook của bạn sẽ xử lý việc thực hiện ý định đã so khớp và truy vấn cơ sở dữ liệu của bạn về đơn đặt hàng thông thường của user@gmail.com. Sau đó, người dùng có thể tiếp tục cuộc trò chuyện với Trợ lý.

Luồng 2: Thông tin của người dùng không tồn tại và người dùng tạo tài khoản

Vì bạn đã bật tính năng tạo tài khoản thông qua giọng nói và user@gmail.com không tồn tại trong phần phụ trợ của bạn, nên Trợ lý sẽ hỏi xem người dùng có muốn thực hiện một trong hai việc sau không:

a) Tạo một tài khoản mới trên hệ thống của bạn bằng cách sử dụng thông tin hồ sơ trên Google của họ. Bạn có thể thực hiện việc này thông qua giọng nói

b) Đăng nhập vào hệ thống của bạn bằng tài khoản khác

Trong trường hợp này, người dùng chọn tạo tài khoản mới qua giọng nói. Google gọi điểm cuối trao đổi mã thông báo của dịch vụ để yêu cầu tạo tài khoản. Yêu cầu này chứa mã nhận dạng của Google, trong đó có các thành phần cần thiết để tạo tài khoản mới. Sau đó, bạn có thể sử dụng thông tin từ mã thông báo này (tên và địa chỉ email của người dùng) để tạo tài khoản cho người dùng.

Sau khi tạo tài khoản, dịch vụ của bạn sẽ trả về một mã truy cập và làm mới mã thông báo cho tài khoản mới tạo. Danh tính của người dùng trong Hành động của bạn hiện đã được liên kết với Tài khoản Google của họ. Yêu cầu ban đầu của người dùng ("Đặt hàng thông thường") khớp với ý định của người dùng order_drink. Sau đó, webhook của bạn sẽ xử lý việc thực hiện ý định đã so khớp và truy vấn cơ sở dữ liệu của bạn cho thứ tự thông thường của user@gmail.com. Thứ tự này chưa tồn tại vì người dùng mới. Sau đó, Hành động của bạn có thể hỏi người dùng xem họ muốn gọi món gì.

Luồng 3: Thông tin của người dùng không tồn tại và người dùng đăng nhập bằng tài khoản khác

Bạn đã bật tính năng tạo tài khoản thông qua giọng nói, vì vậy, Trợ lý sẽ hỏi xem người dùng có muốn thực hiện một trong những việc sau đây không:

a) Tạo một tài khoản mới trên hệ thống của bạn bằng cách sử dụng thông tin hồ sơ trên Google của họ. Bạn có thể thực hiện việc này thông qua giọng nói

b) Đăng nhập vào hệ thống của bạn bằng tài khoản khác

Trong trường hợp này, người dùng chọn đăng nhập bằng một tài khoản khác, việc này sẽ bắt đầu quy trình OAuth tiêu chuẩn. Nếu quy trình bắt đầu trên một thiết bị chỉ hỗ trợ giọng nói, Google sẽ chuyển quy trình thực thi sang điện thoại. Sau đó, Google sẽ mở điểm cuối uỷ quyền của bạn trong trình duyệt của người dùng và tuỳ thuộc vào cấu hình của bạn, người dùng có thể chọn a) đăng nhập vào dịch vụ của bạn bằng một tài khoản hiện có không sử dụng tính năng Đăng nhập bằng Google hoặc b) tạo một tài khoản mới bằng một nhà cung cấp khác. Để biết thêm thông tin về quy trình OAuth, hãy xem bài viết Hướng dẫn về khái niệm liên kết OAuth.

Sau khi xác minh thông tin xác thực của người dùng, dịch vụ của bạn sẽ trả về một mã truy cập và mã làm mới cho Google. Danh tính của người dùng trong Hành động của bạn hiện được liên kết với một tài khoản không phải của Google. Yêu cầu ban đầu của người dùng ("Đặt hàng thông thường") khớp với ý định của người dùng order_drink. Sau đó, webhook của bạn sẽ xử lý việc thực hiện ý định đã so khớp và truy vấn cơ sở dữ liệu của bạn cho thứ tự thông thường của user@gmail.com. Đơn đặt hàng này chưa tồn tại vì người dùng là người dùng mới. Sau đó, Hành động của bạn có thể hỏi người dùng họ muốn gọi món gì hoặc yêu cầu họ thiết lập đơn hàng thông thường.

Quy trình đã tắt tính năng tạo tài khoản bằng giọng nói

Phần này trình bày chi tiết quy trình liên kết tài khoản có thể xảy ra nếu bạn tắt tính năng tạo tài khoản thông qua giọng nói.

Luồng 4: Thông tin của người dùng không tồn tại

Bạn đã không cho phép tạo tài khoản thông qua giọng nói và người dùng không tồn tại trong phần phụ trợ, vì vậy quy trình OAuth tiêu chuẩn bắt đầu. Trợ lý sẽ mở điểm cuối của lệnh uỷ quyền trong trình duyệt của người dùng (nếu quy trình bắt đầu trên một thiết bị chỉ có giọng nói, Google sẽ chuyển lượt thực thi sang một thiết bị có màn hình). Người dùng có thể chọn a) đăng nhập thông qua một nhà cung cấp khác nếu họ đã đăng ký dịch vụ của bạn bằng một tài khoản khác hoặc b) tạo một tài khoản mới với một nhà cung cấp khác. Để biết thêm thông tin về quy trình OAuth, hãy xem bài viết Hướng dẫn về khái niệm liên kết OAuth.

Sau khi xác minh thông tin xác thực của người dùng, dịch vụ của bạn sẽ trả về một mã truy cập và mã làm mới cho Google. Danh tính của người dùng trong Hành động của bạn hiện được liên kết với một tài khoản không phải của Google. Yêu cầu ban đầu của người dùng ("Đặt hàng thông thường") khớp với ý định của người dùng order_drink. Sau đó, webhook của bạn sẽ xử lý việc thực hiện ý định đã so khớp và truy vấn cơ sở dữ liệu của bạn cho thứ tự thông thường của user@gmail.com. Đơn đặt hàng này chưa tồn tại vì người dùng là người dùng mới. Sau đó, Hành động của bạn có thể yêu cầu người dùng thiết lập đơn đặt hàng thông thường.