Enregistrer les mots de passe avec l'enregistrement des identifiants

Pour activer la connexion avec One Tap pour les utilisateurs connus, vous pouvez les inviter à enregistrer leur mot de passe auprès de Google. L'utilisateur pourra se connecter avec ses mots de passe enregistrés dans votre application et sur le Web.

Lorsque vous démarrez le flux d'enregistrement du mot de passe, une boîte de dialogue s'affiche dans une bottom sheet qui lui permet de choisir s'il souhaite enregistrer son mot de passe et dans quel compte Google.

Enregistrer la capture d'écran du mot de passe

Lancer la boîte de dialogue d'enregistrement de la bottom sheet du mot de passe

Vous devez ouvrir la boîte de dialogue d'enregistrement du mot de passe une fois que vous avez authentifié le nom d'utilisateur et le mot de passe auprès de votre backend. Conservez les identifiants en mémoire lors de l'authentification. Après avoir vérifié que les identifiants sont valides, lancez la boîte de dialogue d'enregistrement en procédant comme suit:

  1. Créez un objet SignInPassword. Il doit être initialisé avec l'ID utilisateur qu'il utilise avec votre service (par exemple, son nom d'utilisateur ou son adresse e-mail) et le mot de passe que vous souhaitez enregistrer.

    private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */
    private void savePassword() {
        SignInPassword signInPassword = new SignInPassword(userId, password);
        ...
    
  2. Créer un objet SavePasswordRequest.

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Obtenez un PendingIntent pour afficher la boîte de dialogue d'enregistrement du mot de passe de Identity.getCredentialSavingClient et lancez le flux:

    Identity.getCredentialSavingClient(activity)
       .savePassword(savePasswordRequest)
       .addOnSuccessListener(
           result -> {
               startIntentSenderForResult(
                   result.getPendingIntent().getIntentSender(),
                   REQUEST_CODE_GIS_SAVE_PASSWORD,
                   /* fillInIntent= */ null,
                   /* flagsMask= */ 0,
                   /* flagsValue= */ 0,
                   /* extraFlags= */ 0,
                   /* options= */ null);
           })
    

Gérer les résultats de l'enregistrement de mot de passe

Gérez le résultat du flux d'enregistrement du mot de passe dans onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_GIS_SAVE_PASSWORD) {
        if (resultCode == Activity.RESULT_OK) {
            /* password was saved */
        } else if (resultCode == Activity.RESULT_CANCELED) {
            /* password saving was cancelled */
        }
    }
}
private ActivityResultLauncher<IntentSenderRequest> savePasswordHandler =
    registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
        // handle intent result here
    });