Loại liên kết OAuth và Đăng nhập bằng Google sẽ thêm tính năng Đăng nhập bằng Google vào đầ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.
OAuth và Đăng nhập bằng Google là giải pháp liên kết tài khoản được đề xuất nếu có bất kỳ 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 OAuth và Đăng nhập bằng Google 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 OAuth và tính năng Đăng nhập bằng Google, 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"
}
- Ý định của người trợ giúp đăng nhập vào tài khoản: Ý định của người trợ giúp mà bạn gọi điện để yêu cầu
một quy trình liên kết tài khoản thông qua Trợ lý. Để biết thêm thông tin, hãy xem
Đăng nhập vào tài khoản.
- Chuỗi ngữ cảnh: Chuỗi tùy chỉnh mà bạn thêm vào tài khoản ý định của trình trợ giúp đăng nhập cho người dùng biết lý do bạn muốn liên kết tài khoản của mình.
- Quy trình mã uỷ quyền: Quy trình OAuth 2.0 mà bạn có thể triển khai bằng
OAuth + Đăng nhập bằng Google. 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:
- 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.
- 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 OAuth + Đăng nhập bằng Google. 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 đưa vào mọi yêu cầu gử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 OAuth và Đăng nhập bằng Google, bạn cần có:
- Máy chủ OAuth 2
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=get
vàintent=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 dành cho OAuth và Đăng nhập bằng Google. Phần sau, quy trình OAuth và GSI, 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:
- 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.
- 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.
- 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ơ.
- 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.
- 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ẻ.
- Nếu không, hãy xem bước 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.
- 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.)
- 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 OAuth và GSI
Phần này đề cập đến nhiều quy trình có thể xảy ra với OAuth và GSI. 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ả sử bạn đang sử dụng Dialogflow làm giải pháp hiểu ngôn ngữ tự nhiên cho Hành động của bạn.
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 gọi ý định trợ giúp actions.intent.SIGN_IN
bằng một
chuỗi ngữ cảnh mà bạn tuỳ chỉnh. Ý đị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 đối tượng có ý định tuỳ chỉnh 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
cuộ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 mục đích tùy chỉnh order_drink.
Webhook của bạn sau đó 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 đã bật tính năng 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 của 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 tùy chỉnh 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 của 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 tùy chỉnh 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ọ.