Thẻ Xác thực cung cấp một quy trình xác thực an toàn và đơn giản để sử dụng trong các ứng dụng Android. Bằng cách tạo và chạy một AuthTabIntent
, bạn có thể gọi một Thẻ tuỳ chỉnh chuyên biệt được thiết kế để quản lý trải nghiệm xác thực toàn diện. Thẻ này được tinh giản và có các chức năng hạn chế, giúp người dùng tập trung vào nhiệm vụ đang thực hiện. Sau khi hoàn tất, thẻ sẽ gọi lại cho ứng dụng của bạn bằng kết quả sử dụng https hoặc giản đồ tuỳ chỉnh.


Kể từ Chrome 137, Thẻ xác thực có thể trực tiếp thay thế các chế độ tích hợp xác thực Thẻ tuỳ chỉnh hiện có. Đối với những người dùng có thiết bị không hỗ trợ Thẻ uỷ quyền, hệ thống sẽ tự động chuyển sang Thẻ tuỳ chỉnh. Bạn có thể di chuyển từ Thẻ tuỳ chỉnh sang Thẻ xác thực bằng cách sửa đổi một vài dòng mã.
Cách hoạt động
Với Thẻ uỷ quyền, ứng dụng khách sẽ khởi chạy một Thẻ tuỳ chỉnh chuyên biệt. Thẻ này trình bày một cửa sổ trình duyệt đang tải một URL có trang xác thực dự kiến. Sau khi hoàn tất, Thẻ xác thực sẽ trả về kết quả xác thực bằng một lệnh gọi lại.
Sau khi xác thực, khi một thao tác điều hướng đến URI chuyển hướng lệnh gọi lại đã cung cấp trước đó xảy ra, lệnh chuyển hướng sẽ được ghi lại và trả về cho ứng dụng khách bằng lệnh gọi lại. Đối với các lệnh chuyển hướng sử dụng giản đồ https, trình duyệt sẽ xác minh rằng miền chuyển hướng và ứng dụng khách thuộc cùng một nhà xuất bản bằng cách sử dụng Đường liên kết đến tài sản kỹ thuật số.
Ứng dụng nhận URI được điều hướng bằng lược đồ chuyển hướng (hoặc đối với https, máy chủ lưu trữ và đường dẫn chuyển hướng) bằng cách sử dụng lệnh gọi lại được cung cấp. Dữ liệu này bao gồm mã kết quả cũng như mọi dữ liệu khác do giao diện xác thực cung cấp. Bạn có thể sử dụng dữ liệu này để xác minh quy trình xác thực hoặc xử lý các trường hợp không thành công.
Tại sao nên dùng thẻ Uỷ quyền?
Trước khi có Thẻ uỷ quyền, bạn có thể sử dụng một ý định Thẻ tuỳ chỉnh tiêu chuẩn để hỗ trợ các quy trình xác thực. Bạn nên dùng Thẻ uỷ quyền vì thẻ này giúp tăng cường tính bảo mật, mang lại trải nghiệm tinh giản và cũng trừu tượng hoá một số thành phần bên trong để xác thực từ mã ứng dụng. Vì những lý do này, bạn sẽ thấy rằng Thẻ uỷ quyền mang lại trải nghiệm tốt hơn.
Bảo mật nâng cao
Trong một quy trình triển khai Thẻ tuỳ chỉnh thông thường, cần có một ý định để nhận dữ liệu từ cửa sổ trình duyệt xử lý quy trình xác thực. Điều này đòi hỏi phải có thêm mã và khiến ứng dụng của bạn có nguy cơ bị can thiệp vào ý định của bạn. Với Thẻ uỷ quyền, dữ liệu được nhận bằng một lệnh gọi lại, với quá trình chuyển dữ liệu trực tiếp giữa Android API và ứng dụng khách.
Trải nghiệm đơn giản
Trong Thẻ tuỳ chỉnh, người dùng có quyền sử dụng các tính năng bổ sung trong trình duyệt mà bạn có thể không muốn dùng cho một quy trình xác thực. Thẻ uỷ quyền mang đến trải nghiệm tinh giản bằng cách loại bỏ hầu hết các lựa chọn tuỳ chỉnh có trong Thẻ tuỳ chỉnh tiêu chuẩn. Đối với trình duyệt Chrome, các thao tác này bao gồm nút thu nhỏ, trình đơn ngữ cảnh nhấn và giữ, thao tác chạm để tìm kiếm, cũng như các mục trong trình đơn để Mở trong Chrome, đánh dấu trang, tải xuống và chia sẻ, cũng như Thêm vào màn hình chính.
Các thẻ uỷ quyền vẫn giữ lại các tính năng để trình duyệt tự động điền mật khẩu và thông tin thanh toán đã lưu trước đó, điều hướng về phía sau hoặc phía trước, làm mới, hiện thông tin trang, yêu cầu phiên bản trang dành cho máy tính và cung cấp bản dịch.
Trừu tượng hoá dữ liệu
Chỉ cần triển khai Thẻ uỷ quyền, bạn sẽ không cần ý định nhận dữ liệu từ trình duyệt, cũng như bộ lọc ý định trong AndroidManifest.xml
mà trước đây cần thiết để xác thực hoạt động đúng cách. Điều này giúp giảm độ phức tạp ở phía máy khách. Một số tính năng này vẫn có thể được đưa vào mã ứng dụng để cung cấp khả năng tương thích ngược với Thẻ tuỳ chỉnh trong trường hợp Thẻ xác thực không có trên thiết bị của người dùng.
Triển khai thẻ Xác thực
Thẻ Uỷ quyền yêu cầu thư viện uỷ quyền trình duyệt AndroidX. Bạn có thể thêm Thư viện trình duyệt AndroidX vào phần phụ thuộc của tệp build.gradle
trong một dự án. Các API này có trong bản dựng alpha. Thêm nội dung sau vào tệp bản dựng:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
Trước khi chạy Thẻ uỷ quyền, hãy khai báo một ActivityResultLauncher
nhận ActivityResultCaller
cũng như ActivityResultCallback
. Việc này được thực hiện trước khi hoạt động hoặc mảnh được tạo:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
Tiếp theo, hãy dùng AuthTabIntent.Builder
để tạo một AuthTabIntent
, rồi gọi phương thức launch
. Các phương thức khởi chạy chấp nhận một trong hai nhóm tham số dựa trên lược đồ mà bạn yêu cầu:
redirectScheme: Đối với một lược đồ chuyển hướng tuỳ chỉnh, trình duyệt sẽ chuyển hướng và trả về URI có lược đồ được cung cấp.
redirectHost, redirectPath: Đối với các lược đồ chuyển hướng https, API yêu cầu một máy chủ lưu trữ và đường dẫn riêng để trình duyệt phát hiện lượt chuyển hướng và trả về URI. Khi sử dụng https, bạn phải xác minh Đường liên kết đến tài sản kỹ thuật số.
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
Di chuyển từ Thẻ tuỳ chỉnh sang Thẻ xác thực
Cập nhật quy trình triển khai xác thực Tab tuỳ chỉnh hiện có bằng cách sửa đổi ý định Tab tuỳ chỉnh thành ý định Auth Tab mới. Sau khi thêm mã, hãy tìm ý định Thẻ tuỳ chỉnh rồi sửa đổi thành ý định Thẻ xác thực mới.
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
Dự phòng cho Thẻ tuỳ chỉnh
Một số quy trình triển khai có thể yêu cầu xác thực khi thiết bị của người dùng không được trang bị để xử lý Thẻ xác thực. Ví dụ: điều này có thể xảy ra nếu trình duyệt mặc định không hỗ trợ Thẻ uỷ quyền hoặc nếu phiên bản của trình duyệt mặc định không ở cấp độ bắt buộc. Trong những trường hợp này, ý định Thẻ uỷ quyền sẽ tự động khởi chạy một Thẻ tuỳ chỉnh thay vì cho những trình duyệt hỗ trợ Thẻ tuỳ chỉnh.
Bạn có thể kiểm tra xem trình duyệt có hỗ trợ Thẻ xác thực hay không bằng cách sử dụng CustomTabsClient#isAuthTabSupported()
. Phương thức này cho phép ứng dụng của bạn linh hoạt lựa chọn giữa việc khởi chạy một Thẻ xác thực hoặc một luồng Thẻ tuỳ chỉnh dựa trên các chức năng của trình duyệt. Để xử lý một cách thích hợp trường hợp không hỗ trợ Thẻ uỷ quyền, hãy thêm quy trình triển khai Thẻ uỷ quyền trong khi vẫn giữ mã Thẻ tuỳ chỉnh hiện có để xử lý các quy trình uỷ quyền làm phương án dự phòng.
Hãy cẩn thận xử lý dữ liệu có thể đến ActivityResultCallback
hoặc Ý định hoạt động của bạn. Xin lưu ý rằng nếu AuthTabIntent
được dùng để chạy trải nghiệm dự phòng và thẻ Xác thực không được trình duyệt hiện tại hỗ trợ, thì ứng dụng của bạn sẽ nhận được kết quả Activity.RESULT_CANCELED
khi thẻ tuỳ chỉnh bị đóng.
Bạn có thể xem ví dụ về cách triển khai Thẻ uỷ quyền có phương án dự phòng là Thẻ tuỳ chỉnh trong thư viện Trợ lý trình duyệt Android.