Une fois que les utilisateurs se connectent, créent des comptes ou modifient les mots de passe, autorisez pour qu'ils stockent leurs identifiants afin d'automatiser l'authentification future 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. Pour
par exemple, pour permettre aux utilisateurs de stocker leurs identifiants
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();
Par exemple, une fois que les utilisateurs ont réussi se connecter avec son compte Google:
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 données
identifiants de connexion. Si l'appel à CredentialsClient.save()
n'est pas immédiatement
réussi, les identifiants peuvent être nouveaux, auquel cas l'utilisateur doit confirmer
la demande d'enregistrement. Résolvez le ResolvableApiException
avec
startResolutionForResult()
pour inviter l'utilisateur à confirmer l'opération.
Si l'utilisateur choisit de ne pas enregistrer ses identifiants, il n'est plus invité à
enregistrer les identifiants de n'importe
quel compte pour l'application. Si vous appelez
CredentialsClient.save()
après la désactivation par l'utilisateur, son résultat affichera une
code d'état CANCELED
. L'utilisateur peut l'activer plus tard
l'application Paramètres, dans la section "Smart Lock pour les mots de passe". L'utilisateur doit activer
l'enregistrement des identifiants pour tous les comptes soit 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 version ultérieure, Smart Lock utilise la boîte de dialogue native de confirmation de la saisie automatique chaque fois que possible. Notez que les identifiants enregistrés à l'aide de la saisie automatique avec Google sont partagés de façon bidirectionnelle avec Smart Lock pour les mots de passe.)