首页 > 解决方案 > Flutter - Local_auth(未启用所需的安全功能)

问题描述

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

 PlatformException(NotAvailable, Required security features not enabled, null, null)

现在店里的那个完全没有问题。

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

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

print(canCheckBiometrics); //Returns true
print(availableBiometrics.toString()); //Returns [BiometricType.fingerprint]

之后我尝试进行身份验证

try {
    authenticated = await auth.authenticate(
        biometricOnly: true,
        localizedReason: 'Login with biometrics',
        useErrorDialogs: true,
        stickyAuth: false);
} on PlatformException catch (e) {
    print(e);
}

这将返回:

PlatformException(NotAvailable, Required security features not enabled, null, null)

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

// Indicates the device does not have a Touch ID/fingerprint scanner.  
const String notAvailable = 'NotAvailable';

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

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

希望听到!

标签: flutter

解决方案


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

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

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


推荐阅读