Flutter - Local_auth(未启用所需的安全功能)

Kev*_*ter 7 flutter

在更新我正在开发的应用程序后,我试图让生物识别身份验证再次工作。但是我在激活它时不断收到同样的错误:

 PlatformException(NotAvailable, Required security features not enabled, null, null)
Run Code Online (Sandbox Code Playgroud)

店里目前的一款完全没有问题。

我正在使用 local_auth:1.1.4
MainActivity.java 已转换为 FragmentedActivity
我正在做一个简单的检查,看看生物识别是否可用。他们是谁

 PlatformException(NotAvailable, Required security features not enabled, null, null)
Run Code Online (Sandbox Code Playgroud)

之后我尝试进行身份验证

bool canCheckBiometrics = await auth.canCheckBiometrics;
List<BiometricType> availableBiometrics =
await auth.getAvailableBiometrics();

print(canCheckBiometrics); //Returns true
print(availableBiometrics.toString()); //Returns [BiometricType.fingerprint]
Run Code Online (Sandbox Code Playgroud)

这将返回:

PlatformException(NotAvailable, Required security features not enabled, null, null)
Run Code Online (Sandbox Code Playgroud)

这就是代码中的插件注释所说的。

// Indicates the device does not have a Touch ID/fingerprint scanner.  
const String notAvailable = 'NotAvailable';
Run Code Online (Sandbox Code Playgroud)

我真的不确定要检查什么了。这是我需要注意的新事物吗?

真的希望有人能帮助我解决这个问题!

希望听到!

小智 7

首先,您需要从设置中向您的设备添加生物识别身份验证方法。

例如,如果您使用Pixel 2 API 32 作为 Android 模拟器

  • 转到Android 模拟器内的“设置” 。
  • 进入安全
  • “设备安全”部分下,选择“像素印记”
  • Android 会要求您将手指放在传感器上,在这部分您应该单击Android Studio扩展模拟器设置中的触摸传感器按钮。

扩展模拟器设置 Pixel 2 API 32

  • 以这种方式打开指纹验证后,当您返回应用程序并重试时,您会看到错误消失了。

同样,如果您尝试使用真实设备或其他模拟器,则需要启用指纹身份验证并重试。


isa*_*ior 6

我建议您在尝试对用户进行身份验证之前验证所有功能。

Future<bool> authenticateIsAvailable() async {
  final isAvailable = await localAuth.canCheckBiometrics;
  final isDeviceSupported = await localAuth.isDeviceSupported(); 
  return isAvailable && isDeviceSupported;
}
Run Code Online (Sandbox Code Playgroud)

这样,您只能呼叫localAuth.authenticate已注册凭据的电话,并且可能没有例外。尽管如此,如果可能的话,请捕获错误。


小智 1

我认为您尚未激活指纹,或者您没有使用指纹的权限,请检查权限并重试。

看一下这个:

https://support.dashlane.com/hc/en-us/articles/203682911-How-to-set-biometric-authentication-or-a-PIN-code-to-unlock-Dashlane-on-Android