Aby włączyć logowanie jednym dotknięciem dla powracających użytkowników, możesz poprosić ich o zapisanie swoje hasło w Google. Użytkownik będzie mógł zalogować się, używając zapisanych w aplikacjach i na stronie internetowej.
Gdy rozpoczniesz procedurę zapisywania hasła, użytkownikowi wyświetli się dolne okno, w którym użytkownik może wybrać, czy chce zapisać hasło i na którym koncie Google chcesz je zapisać.
Otwórz okno dolnego zapisywania haseł
Okno zapisywania haseł należy uruchomić po uwierzytelnieniu nazwa użytkownika i hasło z backendu. Zachowaj dane logowania w pamięci, uwierzytelnianie. Po potwierdzeniu, że dane logowania są prawidłowe, uruchom zapisz go, wykonując te czynności:
Utwórz nowy obiekt
SignInPassword
. Powinien zostać zainicjowany przez użytkownika Identyfikator używany przez nich w Twojej usłudze (na przykład nazwa użytkownika lub adres e-mail) i hasło, które chcesz zapisać.private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...
Tworzenie obiektu
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Pobierz
PendingIntent
, aby wyświetlać okno zapisywania hasłaIdentity.getCredentialSavingClient
i uruchom proces:Identity.getCredentialSavingClient(activity) .savePassword(savePasswordRequest) .addOnSuccessListener( result -> { startIntentSenderForResult( result.getPendingIntent().getIntentSender(), REQUEST_CODE_GIS_SAVE_PASSWORD, /* fillInIntent= */ null, /* flagsMask= */ 0, /* flagsValue= */ 0, /* extraFlags= */ 0, /* options= */ null); })
Obsługa wyników zapisywania haseł
Przetwórz wynik procedury zapisywania hasła w onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_GIS_SAVE_PASSWORD) {
if (resultCode == Activity.RESULT_OK) {
/* password was saved */
} else if (resultCode == Activity.RESULT_CANCELED) {
/* password saving was cancelled */
}
}
}
private ActivityResultLauncher<IntentSenderRequest> savePasswordHandler =
registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});