Wenn Sie die Anmeldung mit nur einem Tastenanschlag für wiederkehrende Nutzer aktivieren möchten, können Sie Nutzer auffordern, ihr Passwort bei Google zu speichern. Der Nutzer kann sich mit seinen gespeicherten Passwörtern in Ihrer App und im Web anmelden.
Wenn Sie den Ablauf zum Speichern des Passworts starten, wird dem Nutzer ein Bottomsheet-Dialogfeld angezeigt, in dem er auswählen kann, ob er sein Passwort speichern und in welchem Google-Konto er es speichern möchte.
Bottomsheet-Dialogfeld zum Speichern von Passwörtern starten
Sie sollten das Dialogfeld zum Speichern des Passworts starten, nachdem Sie den Nutzernamen und das Passwort mit Ihrem Backend authentifiziert haben. Die Anmeldedaten während der Authentifizierung im Arbeitsspeicher behalten. Nachdem Sie bestätigt haben, dass die Anmeldedaten gültig sind, öffnen Sie das Dialogfeld zum Speichern. Gehen Sie dazu so vor:
Erstellen Sie ein neues
SignInPassword
-Objekt. Sie sollte mit der Nutzer-ID initialisiert werden, die der Nutzer für Ihren Dienst verwendet (z. B. sein Nutzername oder seine E-Mail-Adresse) und dem Passwort, das Sie speichern möchten.private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...
SavePasswordRequest
-Objekt erstellenSavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Rufe über
Identity.getCredentialSavingClient
einePendingIntent
ab, um das Dialogfeld zum Speichern des Passworts aufzurufen, und starte den Ablauf: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); })
Ergebnisse des Speicherns von Passwörtern verarbeiten
Behandle das Ergebnis des Speichervorgangs für das Passwort in 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
});