Anmeldedaten eines Nutzers speichern

<ph type="x-smartling-placeholder">

Nachdem Nutzer sich erfolgreich angemeldet, Konten erstellt oder Passwörter geändert haben, erlauben Sie ihre Anmeldedaten speichern, um zukünftige Authentifizierungen in Ihrer App zu automatisieren.

Hinweis

Konfigurieren Sie ein Android Studio-Projekt.

Anmeldedaten speichern

Erstellen Sie ein Credential-Objekt, das die Anmeldedaten eines Nutzers enthält. Für um Nutzern die Möglichkeit zu geben, ihre Anmeldedaten nach erfolgreicher Anmeldung mit ihre Passwörter:

Credential credential = new Credential.Builder(email)
        .setPassword(password)  // Important: only store passwords in this field.
                                // Android autofill uses this value to complete
                                // sign-in forms, so repurposing this field will
                                // likely cause errors.
        .build();

Oder beispielsweise nachdem Nutzende sich mit ihrem Google-Konto anmelden:

GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
        .setAccountType(IdentityProviders.GOOGLE)
        .setName(gsa.getDisplayName())
        .setProfilePictureUri(gsa.getPhotoUrl())
        .build();

Dialogfeld „Speichern“ bei Smart Lock

Rufen Sie dann CredentialsClient.save() auf, um die Anmeldedaten. Wenn der Aufruf von CredentialsClient.save() nicht sofort erfolgt erfolgreich sind, sind die Anmeldedaten möglicherweise neu. In diesem Fall muss der Nutzer die Anfrage zum Speichern. Löse das ResolvableApiException mit startResolutionForResult(), um den Nutzer zur Bestätigung aufzufordern.

Wenn der Nutzer seine Anmeldedaten nicht speichert, wird er nicht noch einmal dazu aufgefordert. Anmeldedaten eines beliebigen Kontos für die App zu speichern. Wenn Sie CredentialsClient.save() angezeigt, nachdem der Nutzer sich abgemeldet hat, wird das Ergebnis ein Statuscode von CANCELED. Der Nutzer kann die Anmeldung später über die Google Einstellungen. Der Nutzer muss Anmeldedaten für alle Konten speichern, um beim nächsten Mal aufgefordert zu werden, diese zu speichern.

mCredentialsClient.save(credential).addOnCompleteListener(
        new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "SAVE: OK");
                    Toast.makeText(activity, "Credentials saved", Toast.LENGTH_SHORT).show();
                    return;
                }

                Exception e = task.getException();
                if (e instanceof ResolvableApiException) {
                    // Try to resolve the save request. This will prompt the user if
                    // the credential is new.
                    ResolvableApiException rae = (ResolvableApiException) e;
                    try {
                        rae.startResolutionForResult(this, RC_SAVE);
                    } catch (IntentSender.SendIntentException exception) {
                        // Could not resolve the request
                        Log.e(TAG, "Failed to send resolution.", exception);
                        Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    // Request has no resolution
                    Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
                }
            }
        });</pre>

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // ...

        if (requestCode == RC_SAVE) {
            if (resultCode == RESULT_OK) {
                Log.d(TAG, "SAVE: OK");
                Toast.makeText(this, "Credentials saved", Toast.LENGTH_SHORT).show();
            } else {
                Log.e(TAG, "SAVE: Canceled by user");
            }
        }

        // ...

    }

Nachdem Sie die Anmeldedaten gespeichert haben, rufen Sie sie mit dem folgenden Befehl ab: CredentialsClient.request()

Auf Android O und höher ausgerichtet

Wenn Sie Passwort-Anmeldedaten mit Smart Lock auf Geräten mit Android O speichern oder neuer verwendet Smart Lock das native Bestätigungsdialogfeld für die Autofill-Funktion wenn möglich. (Hinweis: Die Anmeldedaten, die mit Autofill gespeichert wurden, Google-Daten werden in beide Richtungen mit Smart Lock für Passwörter geteilt.)