Hướng dẫn về khái niệm liên quan đến tính năng Đăng nhập bằng Google

Tính năng Đăng nhập bằng Google (GSI) dành cho Trợ lý mang đến khả năng liên kết liền mạch nhất trải nghiệm của người dùng và là quy trình dễ dàng nhất để nhà phát triển triển khai. Với GSI, Hành động của bạn có thể yêu cầu quyền truy cập vào hồ sơ của người dùng trên Google trong khoảng thời gian một cuộc trò chuyện và nếu người dùng đồng ý, hãy nhận tên, địa chỉ email của người dùng và ảnh hồ sơ. Sau đó, Hành động của bạn có thể sử dụng thông tin này để kiểm tra xem người dùng có tài khoản Google trong hệ thống của bạn. Nếu không, Hành động của bạn sẽ hỏi người dùng xem họ muốn tạo một tài khoản mới trong hệ thống của bạn dựa trên tài khoản Google của họ Thông tin hồ sơ.

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

  • Bạn chưa có một hệ thống xác thực và/hoặc bạn kỳ vọng tất cả người dùng có Tài khoản Google. Ví dụ: nếu Hành động của bạn là cụ thể nhắm mục tiêu Trợ lý, bạn có thể kỳ vọng tất cả người dùng của mình có tài khoản.
  • Bạn hiện có một hệ thống xác thực và chỉ muốn liên kết những 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ọ.

Để xác minh rằng GSI 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 đọc về cách hoạt động của GSI, bạn hãy 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 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ể.

Cách hoạt động

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

  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 giá trị nhận dạng của Google chứa thông tin hồ sơ trên Google của người dùng.
  3. Xác thực và giải mã mã thông báo để đọc nội dung hồ sơ. Nếu bạn sử dụng Thư viện Actions on Google Fulfillment dành cho Node.js, mã thông báo sẽ xác thực và giải mã mã thông báo cho bạn.
  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. Người dùng có thể tiếp tục cuộc trò chuyện với Trợ lý có danh tính liên kết với Tài khoản Google của trẻ.
    2. Nếu không, người dùng có thể tạo một tài khoản mới trong hệ thống của bạn bằng thông tin trong mã thông báo mã nhận dạng của Google. Sau đó, người dùng có thể tiếp tục trò chuyện với Trợ lý bằng tài khoản mới của trẻ được liên kết.

Quy trình đăng nhập bằng Google

Phần này mô tả các quy trình khác nhau có thể xảy ra với tính năng Đăng nhập bằng Google.

Quy trình 1: Thông tin của người dùng có trong hệ thống của bạn

Sơ đồ dưới đây cho thấy quy trình đầu cuối diễn ra với GSI khi thông tin của người dùng đã tồn tại trong hệ thống của bạn:

Trong trường hợp này, 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 cho phép truy cập 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 có chứa thông tin hồ sơ của user@gmail.com. Trong trường hợp này, thông tin có trong mã thông báo mã nhận dạng trên Google cho user@gmail.com khớp với một tài khoản trong hệ thống của bạn, nhờ đó danh tính của người dùng trong Hành động của bạn sẽ được tự động liên kết cho tài khoản đó. Sau đó, webhook của bạn có thể đọc đơn đặt hàng thông thường của người dùng từ cơ sở dữ liệu và phản hồi tương ứng.

Quy trình 2: Thông tin của người dùng không tồn tại trong hệ thống của bạn

Sơ đồ dưới đây cho thấy quy trình đầu cuối diễn ra với GSI khi thông tin người dùng không tồn tại trong hệ thống của bạn:

Trong trường hợp này, thông tin trong mã thông báo mã nhận dạng của Google cho user@gmail.com không khớp với tài khoản trong hệ thống của bạn, vì vậy, Trợ lý hỏi người dùng xem họ có muốn tạo tài khoản mới không. Người dùng có thể hoàn tất quá trình tạo tài khoản bằng giọng nói thay vì chuyển sang một thiết bị đã được sàng lọc.

Khi người dùng đồng ý tạo một tài khoản, dịch vụ của bạn sẽ sử dụng thông tin đó trong mã thông báo ID (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ài khoản được tạo, danh tính của người dùng trong Hành động của bạn được liên kết với Tài khoản Google mới của họ.

Trong trường hợp này, người dùng không có đơn hàng thông thường do họ chưa quen với dịch vụ, vì vậy Hành động của bạn hỏi xem họ muốn gọi món gì. Bạn cũng có thể hỏi người dùng xem họ có muốn đặt đơn hàng gần đây nhất không như đơn đặt hàng thông thường của họ.