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 identifiants dans votre application et sur le Web.
Lorsque vous lancez le processus d'enregistrement du mot de passe, Boîte de dialogue "Bottomsheet" qui leur permet de choisir s'ils souhaitent enregistrer leur mot de passe et dans quel compte Google il souhaite l'enregistrer.
Lancer la boîte de dialogue d'enregistrement du mot de passe en bas de l'écran
Vous devez ouvrir la boîte de dialogue d'enregistrement du mot de passe après avoir authentifié nom d'utilisateur et mot de passe avec votre backend. Conservez les identifiants en mémoire l'authentification. Après avoir vérifié la validité des identifiants, lancez la enregistrer la boîte de dialogue en procédant comme suit:
Créez un nouvel objet
SignInPassword
. Il doit être initialisé avec l'utilisateur Identifiant qu'ils utilisent avec votre service (par exemple, leur nom d'utilisateur ou leur adresse e-mail) et le mot de passe à 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();
Obtenir un
PendingIntent
pour afficher la boîte de dialogue d'enregistrement du mot de passeIdentity.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 d'enregistrement des 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
});