Meskipun Credential Manager 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 untuk aplikasi Anda 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.
- Menambahkan dependensi ke aplikasi Anda: Tambahkan library Credential Manager yang diperlukan.
- Membuat instance Credential Manager: Buat instance Credential Manager.
- Menyimpan sandi pengguna: Simpan kredensial pengguna dengan aman.
- Login dengan sandi: Ambil dan gunakan kredensial yang disimpan untuk login.
- Mengidentifikasi kolom yang harus menggunakan isi otomatis: Gunakan isi otomatis untuk pengalaman pengguna yang lebih baik.
- Menambahkan dukungan untuk Digital Asset Links: Tambahkan dukungan untuk berbagi sandi di seluruh aplikasi dan situs yang ditautkan.
Menambahkan dependensi ke aplikasi Anda
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" }
Membuat 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.
Membuat 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.
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)
}
}
}
Login dengan sandi
Untuk mengambil kredensial yang disimpan, 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 mencakup:
- Peningkatan akurasi isi otomatis: Membantu pengelola sandi dan sistem Android mengidentifikasi kolom yang ditujukan untuk kredensial dengan lebih baik.
- Pengalaman pengguna yang ditingkatkan: Dapat menghasilkan saran isi 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.