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();
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.)