Wenn Sie die One Tap-Anmeldung für wiederkehrende Nutzer aktivieren möchten, können Sie Nutzer auffordern, ihr Passwort bei Google zu speichern. Der Nutzer kann sich dann mit seinen gespeicherten Passwörtern in Ihrer App und im Web anmelden.
Wenn Sie den Ablauf zum Speichern von Passwörtern starten, wird dem Nutzer ein Bottomsheet-Dialogfeld angezeigt, in dem er auswählen kann, ob und in welchem Google-Konto er sein Passwort speichern möchte.
Bottomsheet-Dialogfeld zum Speichern von Passwörtern öffnen
Das Dialogfeld zum Speichern des Passworts sollte erst angezeigt werden, nachdem Sie den Nutzernamen und das Passwort mit Ihrem Backend authentifiziert haben. Anmeldedaten während der Authentifizierung im Arbeitsspeicher behalten. Nachdem Sie bestätigt haben, dass die Anmeldedaten gültig sind, rufen Sie das Speicherdialogfeld auf. 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. Nutzername oder 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();
Rufen Sie ein
PendingIntent
ab, um das Dialogfeld zum Speichern des Passworts überIdentity.getCredentialSavingClient
aufzurufen und den Ablauf zu starten: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
Verarbeiten Sie das Ergebnis des Passwortspeichervorgangs 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
});