Si quieres habilitar el acceso con One Tap para los usuarios recurrentes, puedes pedirles que guarden su contraseña con Google. El usuario podrá acceder con su contraseñas en tu app y en la Web.
Cuando inicies el flujo para guardar la contraseña, el usuario verá un diálogo de hoja inferior que les permite elegir si desean guardar su contraseña y en qué Cuenta de Google se quiere guardar.
Abrir diálogo para guardar la hoja inferior
Deberías abrir el cuadro de diálogo para guardar la contraseña después de autenticar la nombre de usuario y contraseña con tu backend. Mantén las credenciales en la memoria mientras autenticando. Una vez que confirmes que las credenciales son válidas, inicia el Guardar de la siguiente manera:
Crea un objeto
SignInPassword
nuevo. Debe inicializarse con el usuario ID que usan con tu servicio (por ejemplo, el nombre de usuario o la dirección de correo electrónico) y la contraseña que quieres guardar.private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...
Crea un objeto
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Obtén una
PendingIntent
para mostrar el diálogo para guardar la contraseñaIdentity.getCredentialSavingClient
y, luego, inicia el flujo: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); })
Cómo controlar los resultados cuando se guardan las contraseñas
Controla el resultado del flujo de guardado de contraseñas en 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
});