Dopo che gli utenti hanno eseguito l'accesso, creato gli account o cambiato le password, consenti al fine di archiviare le proprie credenziali per automatizzare l'autenticazione futura nella tua app.
Prima di iniziare
Configura un progetto Android Studio.
Archivia le credenziali
Crea un oggetto Credential
contenente le informazioni di accesso di un utente. Per
Ad esempio, per consentire agli utenti di memorizzare le proprie credenziali dopo aver eseguito l'accesso con
le relative password:
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();
Oppure, ad esempio, dopo che gli utenti hanno accedono con il proprio Account Google:
GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
.setAccountType(IdentityProviders.GOOGLE)
.setName(gsa.getDisplayName())
.setProfilePictureUri(gsa.getPhotoUrl())
.build();
Quindi, chiama CredentialsClient.save()
per salvare
e credenziali. Se la chiamata a CredentialsClient.save()
non è immediatamente
operazione riuscita, le credenziali potrebbero essere nuove e in questo caso l'utente deve confermare
la richiesta di salvataggio. Risolvi il problema ResolvableApiException
con
startResolutionForResult()
per richiedere una conferma all'utente.
Se l'utente sceglie di non salvare le credenziali, non gli verrà più richiesto di
salvare le credenziali di qualsiasi account per l'app. Se chiami
CredentialsClient.save()
dopo che un utente ha eseguito la disattivazione, il relativo risultato avrà un
il codice di stato CANCELED
. L'utente può eseguire l'attivazione in un secondo momento dall'account Google
Impostazioni, nella sezione Smart Lock per password. L'utente deve attivare
il salvataggio delle credenziali per tutti gli account a cui verrà chiesto di salvare le credenziali la prossima volta.
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");
}
}
// ...
}
Dopo aver memorizzato le credenziali, recuperale chiamando
CredentialsClient.request()
Targeting di Android O e versioni successive
Quando salvi le credenziali delle password utilizzando Smart Lock sui dispositivi con Android O o più recente, Smart Lock utilizza la finestra di dialogo di conferma della compilazione automatica nativa sulla sua di dialogo quando possibile. Tieni presente che le credenziali salvate utilizzando la compilazione automatica con Le app Google sono condivise in modo bidirezionale con Smart Lock per password.)