Pour activer la connexion en un clic pour les utilisateurs connus, vous pouvez leur demander d'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 lancez le flux d'enregistrement du mot de passe, l'utilisateur voit s'afficher une boîte de dialogue en bas de l'écran lui permettant de choisir s'il souhaite enregistrer son mot de passe et dans quel compte Google.
Lancer la boîte de dialogue "Enregistrer le 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 confirmé la validité des identifiants, lancez la boîte de dialogue "Enregistrer" 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 de mots 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
});