Passwörter mit der Funktion „Anmeldedaten speichern“ speichern

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.

Screenshot des Passworts speichern

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:

  1. 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);
        ...
    
  2. SavePasswordRequest-Objekt erstellen

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Rufe über Identity.getCredentialSavingClient eine PendingIntent 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
    });