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á"

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

Liên kết tài khoản đơn giản là giải pháp liên kết tài khoản bạn nên sử dụng, nếu có những điều sau sẽ áp dụng:

  • Bạn có một Hành động diễn ra trên nhiều nền tảng (ví dụ: nếu Thao tác có thể thực hiện được trên ứ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 tài khoản không phải Tài khoản Google. Ví dụ: nếu bạn cung cấp 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 điểm tích luỹ được trong tài khoản hiện tại của họ.

Để xác minh rằng Liên kết đơn 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 tìm hiểu về cách hoạt động của tính năng Liên kết đơn giản, hãy làm quen bằng các điều khoản sau:

  • Mã thông báo giá trị nhận dạng của Google: Xác nhận có chữ ký về danh tính của người dùng có chứa thông tin cơ bản trong hồ sơ Google của người dùng (tên, địa chỉ email và ảnh hồ sơ). Mã thông báo giá trị nhận dạng của Google là Mã thông báo web JSON (JWT). Sau đây là ví dụ về 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: 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.

  • user.accountLinkingStatus: 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ó một danh tính được liên kết.

  • Cảnh của hệ thống liên kết tài khoản: Một cảnh được xác định trước có chức năng xác nhận để liên kết tài khoản, đồng thời có thể được tuỳ chỉnh cho 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 Đơn giản hoá việc liên kết. 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 trình bày 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 đã yêu cầu quyền truy cập 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 cho 2 loại số lần trao đổi:
      1. Trao đổi mã uỷ quyền để lấy mã làm mới dài hạn và một mã truy cập ngắn hạn. Quá trình trao đổi này xảy ra khi người dùng sẽ trải qua quy trình liên kết tài khoản.
      2. Trao đổi mã làm mới dài hạn lấy quyền truy cập trong thời gian ngắn mã thông báo. Quá trình trao đổi này diễn ra khi Google cần mã truy cập mới vì mã đã hết hạn.
  • Luồng mã ngầm: Quy trình OAuth 2.0 mà bạn có thể triển khai bằng Đơn giản hoá việc liên kết. 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. 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 thêm vào mọi yêu cầu gửi đi từ Trợ lý cho 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 của 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.

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

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

Để sử dụng loại liên kết Đơn giản hoá, bạn cần có:

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

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

Cách hoạt động

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

Sau đây là quy trình cơ bản:

  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ột mã thông báo mã nhận dạng của Google chứa thông tin hồ sơ trên 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 này để đọ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 hồ sơ của người dùng trên Google hay không thông tin nào tồn tại trong hệ thống của bạn.
    1. Nếu có thì người dùng đó đã đăng nhập vào hệ thống của bạn bằng Tài khoản Google và Trợ lý liên kết danh tính của người dùng với Tài khoản Google. Người dùng có thể tiếp tục cuộc trò chuyện với Đã liên kết Trợ lý với tài khoản của trẻ.
    2. Nếu không, hãy xem bước 5.
  5. Người dùng có thể a) tạo tài khoản mới bằng 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. Chiến lược phát hành đĩa đơn những lựa chọn khác nhau cho người dùng, tuỳ thuộc vào việc bạn bật hay 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 mình với một tài khoản khác, thì luồng OAuth chuẩn sẽ bắt đầu.
  6. Sau khi người dùng tạo một 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ột mã truy cập cho Google. (Nếu bạn đang sử dụng 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 cuộc trò chuyện với Trợ lý bằng tài khoản được liên kết.

Quy trình liên kết tinh giản

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. Các sơ đồ này trình bày các quy trình xảy ra với quy trình mã uỷ quyền thay vì luồng mã ngầm ẩn và giả định rằng bạn đang sử dụng Trình tạo hành động.

Mỗi quy trình chứa các bước thông thường 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 chuyển sang cảnh hệ thống liên kết tài khoản và cung cấp một lý do riêng. Cảnh này yêu cầu người dùng cấp quyền truy cập thông tin trong 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 sẽ khác nhau tuỳ vào việc bạn có định cấu hình tài khoản hay không bằng giọng nói và thông tin người dùng đã tồn tại trong hệ thống. Từng quy trình này được mô tả trong những phần sau.

Các quy trình được bật tính năng tạo tài khoản thoạ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ạo tài khoản qua giọng nói.

Quy trình 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 mà user@gmail.com đại diện sẽ tồn tại trong phần phụ trợ của bạn, để điểm cuối trao đổi mã thông báo sẽ trả về một mã thông báo cho 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 (“Đặt hàng theo thông thường của tôi”) 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 được so khớp và truy vấn cơ sở dữ liệu cho thứ tự thông thường của user@gmail.com. Sau đó, người dùng có thể tiếp tục trò chuyện với Trợ lý.

Quy trình 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 qua giọng nói và user@gmail.com không tồn tại trong phần phụ trợ của bạn, Trợ lý sẽ hỏi người dùng xem họ có muốn làm gì không một trong hai điều kiện sau:

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ọ, được thực hiện thông qua giọng nói

b) Đăng nhập vào hệ thống của bạn bằng một 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 thông qua giọng nói. Cuộc gọi của Google điểm cuối trao đổi mã thông báo của dịch vụ của bạn với yêu cầu tạo tài khoản. Yêu cầu này chứa mã thông báo 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ã truy cập và làm mới 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 là đượ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 của tôi”) khớp với ý định của người dùng order_drink. Webhook của bạn sẽ xử lý việc thực hiện ý định được so khớp và truy vấn cơ sở dữ liệu của bạn Thứ tự thông thường của user@gmail.com 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 xem họ muốn gọi món gì.

Quy trình 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 đã cho phép tạo tài khoản qua giọng nói nên Trợ lý sẽ hỏi người dùng xem họ muốn làm một trong những việc sau:

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ọ, được thực hiện thông qua giọng nói

b) Đăng nhập vào hệ thống của bạn bằng một 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. bắt đầu quy trình OAuth 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 chuyển quá trình thực thi sang một đ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 khác, người dùng có thể chọn a) đăng nhập vào dịch vụ của bạn bằng 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 tài khoản mới thông qua một nhà cung cấp khác. Để biết thêm thông tin về quy trình OAuth, hãy xem Hướng dẫn về khái niệm liên kết với OAuth.

Sau khi xác minh thông tin đăng nhập của người dùng, dịch vụ của bạn sẽ trả về mã truy cập và một mã làm mới gửi đến 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 của tôi”) khớp ý định của người dùng order_drink. Sau đó, webhook của bạn xử lý việc thực hiện ý định được so khớp và truy vấn cơ sở dữ liệu của bạn theo thứ tự thông thường của user@gmail.com, 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 muốn gọi món gì hoặc yêu cầu họ đặt đơn hàng thông thường.

Quy trình với tính năng tạo tài khoản thoại bị tắt

Mục 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ạo tài khoản qua giọng nói.

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

Sau khi xác minh thông tin đăng nhập của người dùng, dịch vụ của bạn sẽ trả về mã truy cập và một mã làm mới gửi đến 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 của tôi”) khớp ý định của người dùng order_drink. Sau đó, webhook của bạn xử lý việc thực hiện ý định được so khớp và truy vấn cơ sở dữ liệu của bạn theo thứ tự thông thường của user@gmail.com, 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 để thiết lập đơn hàng thông thường của họ.