Simplemente tendrá que llamar a:
ConfigFile.startBioLogin(activity, resultLauncherLogin, true)
El registerForActivityResult recoge la lógica de vuelta de realizar login, puedes realizar acciones tanto si ha resultado erróneo como si ha sido satisfactoria y guardar el token del usuario o recoger la información del usuario en caso de que se haya solicitado (ver en siguiente párrafo)
El último parámetro es un Booleano que permite recoger, directamente, la información del usuario al finalizar el login.
resultLauncherLogin = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){ result ->
if (result.resultCode == Activity.RESULT_OK) {
result.data?.extras?.let {
val token = it.get(Constants.TOKEN) as TokenResponse
if (it.get(USER_INFO) != null) {
onSuccess(it.get(USER_INFO) as UserInfoBack)
} else {
// no user data
}
}
} else if (result.resultCode == Activity.RESULT_CANCELED) {
result.data?.extras?.let {
val error = it.get(ERROR) as BioException
Toast.makeText(this, "LOGON_RESULT_CANCELED", Toast.LENGTH_LONG).show()
}
}
}
Log.d("USER_UUID","${bioSharedPreferences.currentUser?.uuid}" )
En caso de error en login es recogido desde el resultLauncher cuando el resultCode no es RESULT_OK. Pueden existir los siguientes errores en caso de que no se haya configurado el cliente correctamente:
- "REDIRECT_URI_INVALID"
- "PLUGIN_ID_NOT_FOUND"
- "REDIRECT_URI_NOT_MATCH"
¿Cómo puedo escanear un QR?
Simplemente tendrá que llamar a:
ConfigFile.startBioScan(this,resultScanLauncher)
El registerForActivityResult recoge el resultado de vuelta del escaneo del QR
resultLauncherScan = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
when(result.resultCode) {
RESULT_OK -> {
activity.showCustomDialog(description = getString(R.string.bar_code_ok))
}
RESULT_CANCELED -> {
result.data?.extras?.let {
val bioException = it.get(ERROR) as BioException
DialogCustomManager(activity).showDialogError(bioException)
}
}
RESULT_OK_WITH_BIOMETRIC_CHANGES -> {
result.data?.extras?.let {
val bioException = it.get(ERROR) as BioException
DialogCustomManager(activity).showDialogError(bioException)
}
}
}
}
Una vez realizada esta acción y devuelto el código RESULT_OK el proceso de acceder a la información del usuario pasa a ser parte de la web donde esta el QR.
Observaciones: Disponemos de un nuevo parámetro en la librería para controlar el caso de que haya cambios biométricos nuevos en el terminal móvil y se haya seteado en la librería la secureFlag a FALSE
com.lib.bfy.utils.RESULT_OK_WITH_BIOMETRIC_CHANGES
Nota: Para poder realizar el login o escanear un QR correctamente se ha tenido que realizar un enrollment y una verificación correcta tanto de email como del teléfono del usuario y una vez realizado eso el usuario tiene que tener la biometría de su dispositivo activa.