Une fois que les utilisateurs se sont connectés, ont créé des comptes ou modifié leurs mots de passe, autorisez-les à stocker leurs identifiants pour automatiser la future authentification dans votre application.
Avant de commencer
Configurez un projet Android Studio.
Stocker les identifiants
Créez un objet Credential
contenant les informations de connexion d'un utilisateur. Par exemple, pour permettre aux utilisateurs de stocker leurs identifiants après s'être connectés avec leurs mots de passe:
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();
Une fois que les utilisateurs se sont connectés à leur compte Google, par exemple:
GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
.setAccountType(IdentityProviders.GOOGLE)
.setName(gsa.getDisplayName())
.setProfilePictureUri(gsa.getPhotoUrl())
.build();
Appelez ensuite CredentialsClient.save()
pour enregistrer les identifiants des utilisateurs. Si l'appel de CredentialsClient.save()
n'aboutit pas immédiatement, les identifiants peuvent être nouveaux. Dans ce cas, l'utilisateur doit confirmer la requête d'enregistrement. Résoudre ResolvableApiException
avec startResolutionForResult()
pour inviter l'utilisateur à confirmer l'opération.
Si l'utilisateur choisit de ne pas enregistrer d'identifiants, il ne sera plus invité à enregistrer les identifiants du compte pour l'application. Si vous appelez CredentialsClient.save()
alors qu'un utilisateur a désactivé cette option, le résultat sera associé au code d'état CANCELED
. L'utilisateur peut activer cette option ultérieurement dans l'application Paramètres Google, dans la section "Smart Lock pour les mots de passe". L'utilisateur doit activer l'enregistrement des identifiants pour tous les comptes afin d'être invité à les enregistrer la prochaine fois.
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");
}
}
// ...
}
Après avoir stocké les identifiants, récupérez-les en appelant CredentialsClient.request()
.
Ciblage d'Android O ou version ultérieure
Lorsque vous enregistrez des identifiants de mot de passe à l'aide de Smart Lock sur des appareils équipés d'Android O ou d'une version ultérieure, Smart Lock utilise la boîte de dialogue de confirmation de saisie automatique native sur sa propre boîte de dialogue dans la mesure du possible. Notez que les identifiants enregistrés à l'aide de la saisie automatique avec Google sont partagés de manière bidirectionnelle avec Smart Lock pour les mots de passe.