Stocker les identifiants d'un utilisateur

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

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

Boîte de dialogue d&#39;enregistrement Smart Lock

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