Pour activer la connexion en un geste pour les utilisateurs connus, vous pouvez les inviter à enregistrer leur mot de passe avec 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 parcours d'enregistrement du mot de passe, une boîte de dialogue BottomSheet s'affiche pour permettre à l'utilisateur de choisir s'il souhaite enregistrer son mot de passe et dans quel compte Google.
Lancer la boîte de dialogue de bottomsheet d'enregistrement du mot de passe
Vous devez lancer la boîte de dialogue d'enregistrement du mot de passe après avoir authentifié le nom d'utilisateur et le mot de passe avec votre backend. Conservez les identifiants en mémoire lors de l'authentification. Une fois que vous avez vérifié que les identifiants sont valides, lancez la boîte de dialogue d'enregistrement en procédant comme suit:
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); ...
Créer un objet
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Obtenez un
PendingIntent
pour afficher la boîte de dialogue d'enregistrement du mot de passe à partir deIdentity.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 des mots de passe
Gérez le résultat de la procédure 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
});