Mặc dù Trình quản lý thông tin xác thực hỗ trợ tính năng đăng nhập dựa trên mật khẩu, nhưng bạn nên ưu tiên các phương thức xác thực hiện đại và an toàn hơn như khoá truy cập và Đăng nhập bằng Google. Các phương thức này mang lại tính bảo mật và trải nghiệm người dùng tốt hơn đáng kể. Tuy nhiên, nếu ứng dụng của bạn phải hỗ trợ mật khẩu, hãy sử dụng hướng dẫn này làm tài liệu tham khảo để triển khai mật khẩu bằng Trình quản lý thông tin xác thực.
Trình quản lý thông tin xác thực cung cấp một API hợp nhất để ứng dụng của bạn lưu và truy xuất thông tin đăng nhập của người dùng, bao gồm cả tên người dùng và mật khẩu. Điều này giúp đơn giản hoá quy trình đăng nhập cho người dùng và cho phép họ sử dụng trình cung cấp thông tin đăng nhập một cách liền mạch.
Điều kiện tiên quyết
Việc triển khai mật khẩu của Trình quản lý thông tin xác thực hoạt động trên các thiết bị chạy Android 4.4 (cấp độ API 19) trở lên.
Tổng quan
Hướng dẫn này tập trung vào những thay đổi cần thiết trong ứng dụng của bạn để tạo, lưu và đăng nhập bằng mật khẩu.
- Thêm các phần phụ thuộc vào ứng dụng: Thêm các thư viện Trình quản lý thông tin xác thực bắt buộc.
- Khởi tạo Trình quản lý thông tin xác thực: Tạo một thực thể Trình quản lý thông tin xác thực.
- Lưu mật khẩu của người dùng: Lưu trữ thông tin đăng nhập của người dùng một cách an toàn.
- Đăng nhập bằng mật khẩu: Truy xuất và sử dụng thông tin đăng nhập đã lưu để đăng nhập.
- Xác định những trường cần sử dụng tính năng tự động điền: Sử dụng tính năng tự động điền để mang lại trải nghiệm tốt hơn cho người dùng.
- Thêm tính năng hỗ trợ cho Digital Asset Links: Thêm tính năng hỗ trợ để chia sẻ mật khẩu giữa các ứng dụng và trang web được liên kết.
Thêm phần phụ thuộc vào ứng dụng
Thêm các phần phụ thuộc sau vào tệp build.gradle của mô-đun ứng dụng:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Khởi tạo Trình quản lý thông tin xác thực
Sử dụng ngữ cảnh ứng dụng hoặc hoạt động để tạo đối tượng CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Lưu mật khẩu của người dùng
Khi người dùng đăng ký hoặc cập nhật mật khẩu thành công trong ứng dụng của bạn, hãy lưu thông tin xác thực này trong trình quản lý mật khẩu của họ.
Tạo một yêu cầu về mật khẩu: Đối tượng
CreatePasswordRequestchứa tên người dùng và mật khẩu cần lưu. GọicredentialManager.createCredential()để bắt đầu quy trình lưu.Xử lý phản hồi: Xử lý
CreatePasswordResponsevà quản lý mọi lỗi (ví dụ: nếu người dùng huỷ yêu cầu).
suspend fun registerPassword(username: String, password: String) {
// Initialize a CreatePasswordRequest object.
val createPasswordRequest =
CreatePasswordRequest(id = username, password = password)
// Create credential and handle result.
coroutineScope {
try {
val result =
credentialManager.createCredential(
// Use an activity based context to avoid undefined
// system UI launching behavior.
activityContext,
createPasswordRequest
)
// Handle register password result
} catch (e: CreateCredentialException) {
handleFailure(e)
}
}
}
Đăng nhập bằng mật khẩu
Để truy xuất thông tin đăng nhập đã lưu, hãy tạo một GetCredentialRequest bằng GetPasswordOption rồi gọi getCredential(). Để lọc những mật khẩu được tìm nạp dựa trên mã nhận dạng người dùng đã chỉ định, hãy sử dụng trường không bắt buộc allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Xác định những trường cần sử dụng tính năng tự động điền
Thuộc tính android:isCredential giúp nhà cung cấp thông tin xác thực xác định các trường dành cho tính năng tự động điền, nhờ đó mang đến trải nghiệm mượt mà hơn cho người dùng. Thuộc tính này bổ sung cho autofillHints hiện có.
Việc chỉ định một số trường để dùng cho tính năng tự động điền mang lại những lợi ích sau:
- Cải thiện độ chính xác của tính năng tự động điền: Giúp trình quản lý mật khẩu và hệ thống Android xác định chính xác hơn các trường dành cho thông tin đăng nhập.
- Cải thiện trải nghiệm người dùng: Có thể mang đến các đề xuất tự động điền mượt mà và đáng tin cậy hơn.
Thêm thuộc tính isCredential vào các trường tên người dùng và mật khẩu như trong ví dụ sau:
<EditText
android:id="@+id/username_edittext"
android:autofillHints="username"
android:isCredential="true" />
<EditText
android:id="@+id/password_edittext"
android:inputType="textPassword"
android:autofillHints="password"
android:isCredential="true" />
Ngoài ra, bạn có thể thêm thuộc tính theo phương thức lập trình như minh hoạ trong đoạn mã sau:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Thêm tính năng hỗ trợ cho Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số)
Để đảm bảo khả năng tương thích với trình quản lý mật khẩu, bạn phải định cấu hình Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) giữa ứng dụng và trang web của mình. Điều này cho phép chia sẻ thông tin đăng nhập một cách an toàn trên cả hai nền tảng.