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) cho Trợ lý mang đến trải nghiệm liên kết liền mạch nhất cho 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ơ trên Google của người dùng trong khi trò chuyện và nếu người dùng đồng ý, Hành động của bạn sẽ nhận được tên, địa chỉ email và ảnh hồ sơ của người dùng. 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 hay không. Nếu không, Hành động của bạn sẽ hỏi người dùng xem họ có muốn tạo tài khoản mới trong hệ thống của bạn dựa trên thông tin hồ sơ Google của họ hay không.

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

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

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

Quy trình cơ bản cho GSI 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. 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 cho Node.js, thì thư viện này 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 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ó, thì tức là 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ọ. Người dùng có thể tiếp tục trò chuyện với Trợ lý bằng danh tính liên kết với Tài khoản Google của họ.
    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 với thông tin có trong mã thông báo giá trị 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 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.

Luồng 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 hai đầu diễn ra với GSI khi thông tin của người dùng đã có trong hệ thống:

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

Luồng 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 từ đầu đến cuối xảy ra với GSI khi thông tin của người dùng không tồn tại trong hệ thống:

Trong trường hợp này, thông tin có trong mã nhận dạng Google cho user@gmail.com không khớp với tài khoản trong hệ thống của bạn. Do đó, Trợ lý sẽ hỏi người dùng xem họ có muốn tạo tài khoản mới hay 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 tài khoản, dịch vụ của bạn sẽ sử dụng thông tin trong mã thông báo mã nhận dạng (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, danh tính của người dùng trong Hành động của bạn sẽ đượ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 đặt hàng thông thường vì họ mới sử dụng dịch vụ, vì vậy, Hành động của bạn sẽ hỏi họ muốn đặt hàng gì. Bạn cũng có thể hỏi người dùng xem họ có muốn đặt đơn đặt hàng gần đây nhất làm thứ tự thông thường hay không.