Sebbene Gestore delle credenziali supporti l'accesso basato su password, ti consigliamo vivamente di dare la priorità ai metodi di autenticazione moderni e più sicuri, come le passkey e Accedi con Google. Questi metodi offrono una sicurezza e un'esperienza utente notevolmente migliori. Tuttavia, se la tua applicazione deve supportare le password, utilizza questa guida come riferimento per implementare le password con Gestore delle credenziali.
Gestore delle credenziali fornisce un'API unificata per la tua app per salvare e recuperare le credenziali utente, inclusi nomi utente e password. In questo modo, il processo di accesso per gli utenti viene semplificato e possono utilizzare i provider di credenziali senza problemi.
Prerequisiti
L'implementazione delle password di Gestore delle credenziali funziona su dispositivi con Android 4.4 (livello API 19) e versioni successive.
Panoramica
Questa guida si concentra sulle modifiche necessarie nell'app per creare, salvare e accedere con una password.
- Aggiungi dipendenze alla tua app: aggiungi le librerie di Gestore delle credenziali richieste.
- Crea un'istanza di Gestore delle credenziali: crea un'istanza di Gestore delle credenziali.
- Salva la password di un utente: archivia le credenziali utente in modo sicuro.
- Accedi con una password: recupera e utilizza le credenziali memorizzate per l'accesso.
- Identifica i campi che devono utilizzare la compilazione automatica: utilizza la compilazione automatica per una migliore esperienza utente.
- Aggiungi il supporto per Digital Asset Links: aggiungi il supporto per condividere le password tra app e siti web collegati.
Aggiungi dipendenze alla tua app
Aggiungi le seguenti dipendenze al file build.gradle del modulo dell'app:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Trendy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Crea un'istanza di Gestore delle credenziali
Utilizza il contesto dell'app o dell'attività per creare un oggetto CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Salva la password di un utente
Quando un utente si registra o aggiorna la password all'interno dell'app, salva queste credenziali nel suo gestore delle password.
Crea una richiesta di password: l'
CreatePasswordRequestoggetto contiene il nome utente e la password da salvare. ChiamacredentialManager.createCredential()per avviare il processo di salvataggio.Gestisci la risposta: elabora
CreatePasswordResponsee gestisci eventuali errori (ad esempio, se l'utente annulla la richiesta).
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)
}
}
}
Accedi con una password
Per recuperare le credenziali salvate, crea un GetCredentialRequest con un
GetPasswordOption e chiama getCredential(). Per filtrare le
password recuperate in base agli ID utente specificati, utilizza il campo facoltativo
allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Identifica i campi che devono utilizzare la compilazione automatica
L'attributo android:isCredential aiuta i provider di credenziali a identificare i campi destinati alla compilazione automatica, offrendo un'esperienza utente più fluida. Questo attributo integra gli autofillHints esistenti.
Di seguito sono riportati i vantaggi dell'indicazione di determinati campi destinati alla compilazione automatica:
- Maggiore precisione della compilazione automatica: aiuta i gestori delle password e il sistema Android a identificare meglio i campi destinati alle credenziali.
- Esperienza utente migliorata: può portare a suggerimenti di compilazione automatica più fluidi e affidabili.
Includi l'attributo isCredential nei campi del nome utente e della password, come mostrato nell'esempio seguente:
<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" />
In alternativa, aggiungi l'attributo a livello di programmazione come mostrato nel seguente snippet:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Aggiungi il supporto per Digital Asset Links
Per garantire la compatibilità con i gestori delle password, devi configurare Digital Asset Links tra la tua app e il tuo sito web. In questo modo, le credenziali possono essere condivise in modo sicuro su entrambe le piattaforme.