Meskipun Pengelola Kredensial mendukung login berbasis sandi, sebaiknya prioritaskan metode autentikasi modern yang lebih aman seperti kunci sandi dan Login dengan Google. Metode ini menawarkan keamanan dan pengalaman pengguna yang jauh lebih baik. Namun, jika aplikasi Anda harus mendukung sandi, gunakan panduan ini sebagai referensi untuk menerapkan sandi dengan Credential Manager.
Credential Manager menyediakan API terpadu bagi aplikasi Anda untuk menyimpan dan mengambil kredensial pengguna, termasuk nama pengguna dan sandi. Hal ini menyederhanakan proses login bagi pengguna dan memungkinkan mereka menggunakan penyedia kredensial dengan lancar.
Prasyarat
Implementasi sandi Credential Manager berfungsi di perangkat yang menjalankan Android 4.4 (level API 19) dan yang lebih tinggi.
Ringkasan
Panduan ini berfokus pada perubahan yang diperlukan di aplikasi Anda untuk membuat, menyimpan, dan login dengan sandi.
- Tambahkan dependensi ke aplikasi Anda: Tambahkan library Credential Manager yang diperlukan.
- Buat instance Credential Manager: Buat instance Credential Manager.
- Menyimpan sandi pengguna: Simpan kredensial pengguna dengan aman.
- Login dengan sandi: Mengambil dan menggunakan kredensial tersimpan untuk login.
- Mengidentifikasi kolom yang harus menggunakan isi otomatis: Gunakan isi otomatis untuk pengalaman pengguna yang lebih baik.
- Menambahkan dukungan untuk Digital Asset Links: Menambahkan dukungan untuk membagikan sandi di seluruh aplikasi dan situs yang ditautkan.
Menambahkan dependensi ke aplikasi
Tambahkan dependensi berikut ke file build.gradle modul aplikasi Anda:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Buat instance Credential Manager
Gunakan konteks aplikasi atau aktivitas Anda untuk membuat objek CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Menyimpan sandi pengguna
Saat pengguna berhasil mendaftar atau memperbarui sandi mereka dalam aplikasi Anda, simpan kredensial ini di pengelola sandi mereka.
Buat permintaan sandi: Objek
CreatePasswordRequestberisi nama pengguna dan sandi yang akan disimpan. PanggilcredentialManager.createCredential()untuk memulai proses penyimpanan.Menangani respons: Proses
CreatePasswordResponsedan kelola error apa pun (misalnya, jika pengguna membatalkan permintaan).
suspend fun registerPassword(username: String, password: String) {
// Initialize a CreatePasswordRequest object.
val createPasswordRequest =
CreatePasswordRequest(id = username, password = password)
// Create credential and handle result.
// Use an activity-based context to avoid undefined system UI
// launching behavior.
val context = MutableContextWrapper(activityContext)
coroutineScope {
try {
val result =
credentialManager.createCredential(
// Use MutableContextWrapper to avoid memory leak during configuration changes
context = context,
createPasswordRequest
)
// Handle register password result
} catch (e: CreateCredentialException) {
handleFailure(e)
}
}
}
Login dengan sandi
Untuk mengambil kredensial tersimpan, buat GetCredentialRequest dengan
GetPasswordOption dan panggil getCredential(). Untuk memfilter sandi yang diambil berdasarkan ID pengguna yang ditentukan, gunakan kolom opsional allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Mengidentifikasi kolom yang harus menggunakan isi otomatis
Atribut android:isCredential membantu penyedia kredensial mengidentifikasi kolom yang ditujukan untuk isi otomatis, sehingga menghasilkan pengalaman pengguna yang lebih lancar. Atribut ini melengkapi autofillHints yang ada.
Manfaat menunjukkan kolom tertentu yang ditujukan untuk isi otomatis meliputi:
- Peningkatan akurasi isi otomatis: Membantu pengelola sandi dan sistem Android mengidentifikasi kolom yang ditujukan untuk kredensial dengan lebih baik.
- Pengalaman pengguna yang lebih baik: Dapat menghasilkan saran pengisian otomatis yang lebih lancar dan andal.
Sertakan atribut isCredential di kolom nama pengguna dan sandi seperti yang ditunjukkan dalam
contoh berikut:
<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" />
Atau, tambahkan atribut secara terprogram seperti yang ditunjukkan dalam cuplikan berikut:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Menambahkan dukungan untuk Digital Asset Links
Untuk memastikan kompatibilitas dengan pengelola sandi, Anda harus mengonfigurasi Digital Asset Links antara aplikasi dan situs Anda. Hal ini memungkinkan kredensial dibagikan dengan aman di kedua platform.