Credential Manager obsługuje logowanie za pomocą hasła, ale zdecydowanie zalecamy priorytetowe traktowanie nowoczesnych i bezpieczniejszych metod uwierzytelniania, takich jak klucze dostępu i Zaloguj się przez Google. Te metody zapewniają znacznie lepsze bezpieczeństwo i wygodę użytkowników. Jeśli jednak Twoja aplikacja musi obsługiwać hasła, użyj tego przewodnika jako odniesienia do implementowania haseł za pomocą Credential Manager.
Credential Manager udostępnia ujednolicony interfejs API, który umożliwia aplikacji zapisywanie i pobieranie danych logowania użytkowników, w tym nazw użytkowników i haseł. Upraszcza to proces logowania użytkowników i pozwala im bezproblemowo korzystać z dostawców danych logowania.
Wymagania wstępne
Implementacja haseł w Credential Manager działa na urządzeniach z Androidem w wersji 4.4 (poziom API 19) lub nowszej.
Przegląd
Ten przewodnik koncentruje się na zmianach, które należy wprowadzić w aplikacji, aby utworzyć hasło, zapisać je i zalogować się za jego pomocą.
- Dodaj zależności do aplikacji: dodaj wymagane biblioteki Credential Manager.
- Utwórz instancję Credential Manager: utwórz instancję Credential Manager.
- Zapisz hasło użytkownika: bezpiecznie przechowuj dane logowania użytkownika.
- Zaloguj się za pomocą hasła: pobierz i użyj zapisanych danych logowania.
- Określ pola, w których ma być używane autouzupełnianie: używaj autouzupełniania, aby zapewnić lepsze wrażenia użytkownikom.
- Dodaj obsługę Digital Asset Links: dodaj obsługę udostępniania haseł w połączonych aplikacjach i witrynach.
Dodawanie zależności do aplikacji
Dodaj te zależności do pliku build.gradle modułu aplikacji:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Tworzenie instancji Credential Manager
Aby utworzyć obiekt CredentialManager, użyj kontekstu aplikacji lub aktywności.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Zapisywanie hasła użytkownika
Gdy użytkownik zarejestruje się lub zaktualizuje hasło w Twojej aplikacji, zapisz te dane logowania w jego menedżerze haseł.
Utwórz żądanie hasła: obiekt
CreatePasswordRequestzawiera nazwę użytkownika i hasło, które mają zostać zapisane. Aby rozpocząć proces zapisywania, wywołaj funkcjęcredentialManager.createCredential().Obsłuż odpowiedź: przetwórz
CreatePasswordResponsei zarządzaj błędami (np. jeśli użytkownik anuluje żądanie).
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)
}
}
}
Logowanie za pomocą hasła
Aby pobrać zapisane dane logowania, utwórz GetCredentialRequest z
GetPasswordOption i wywołaj getCredential(). Aby filtrować pobierane
hasła na podstawie określonych identyfikatorów użytkowników, użyj opcjonalnego pola
allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Określanie pól, w których ma być używane autouzupełnianie
Atrybut android:isCredential pomaga dostawcom danych logowania identyfikować pola przeznaczone do autouzupełniania, co przekłada się na lepsze wrażenia użytkowników. Ten atrybut uzupełnia istniejące autofillHints.
Wskazywanie, że niektóre pola są przeznaczone do autouzupełniania, ma te zalety:
- Większa dokładność autouzupełniania: pomaga menedżerom haseł i systemowi Android lepiej identyfikować pola przeznaczone na dane logowania.
- Lepsze wrażenia użytkowników: może prowadzić do płynniejszych i bardziej niezawodnych sugestii autouzupełniania.
Dodaj atrybut isCredential do pól nazwy użytkownika i hasła, jak pokazano w tym przykładzie:
<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" />
Możesz też dodać atrybut programowo, jak pokazano w tym fragmencie kodu:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Dodawanie obsługi Digital Asset Links
Aby zapewnić zgodność z menedżerami haseł, musisz skonfigurować Digital Asset Links między aplikacją a witryną. Umożliwi to bezpieczne udostępnianie danych logowania na obu platformach.