Flutter教程生物识别认证开发

如何在Flutter应用中集成生物识别认证功能?具体需要哪些依赖包和权限配置?

本地测试时发现指纹识别回调不触发,可能是什么原因导致的?是否需要真机测试才能正常使用生物认证功能?

不同Android/iOS版本对生物识别API的支持有差异吗?如何做版本兼容处理?

除了指纹识别,Flutter是否支持面部识别等其他生物认证方式?代码实现上有何不同?

3 回复

作为一个屌丝程序员,我来分享下Flutter做生物识别认证的基本思路。首先需要添加依赖包local_auth,它支持指纹、面容识别等。

  1. 初始化权限检查:调用canCheckBiometrics()判断设备是否支持生物识别。
  2. 获取可用的认证类型:使用getAvailableBiometrics()获取指纹或面容信息。
  3. 开始认证:调用authenticate()启动认证流程,可设置标题和错误提示。
  4. 处理结果:认证成功会返回true,失败则捕获异常处理。

示例代码:

import 'package:local_auth/local_auth.dart';

final LocalAuthentication auth = LocalAuthentication();
bool canCheckBiometrics = false;
List<BiometricType> availableBiometrics = [];

void checkBiometrics() async {
  canCheckBiometrics = await auth.canCheckBiometrics;
  if (!canCheckBiometrics) return;

  availableBiometrics = await auth.getAvailableBiometrics();
}

void authenticate() async {
  try {
    bool authenticated = await auth.authenticate(
      localizedReason: '请验证指纹',
      options: const AuthenticationOptions(stickyAuth: true),
    );
    print('认证结果: $authenticated');
  } catch (e) {
    print('认证失败: $e');
  }
}

记得在Android和iOS平台都配置好权限和证书。这个功能虽然简单,但能让应用更有科技感。

更多关于Flutter教程生物识别认证开发的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中实现生物识别认证(如指纹或面部识别),你可以使用local_auth插件。以下是一个简单的步骤:

  1. 添加依赖:在pubspec.yaml中添加local_auth: ^2.0.0

  2. 初始化:确保目标设备支持生物识别,且已配置相关设置。

import 'package:local_auth/local_auth.dart';

final LocalAuthentication auth = LocalAuthentication();
bool canCheckBiometrics = false;

void checkBiometric() async {
  canCheckBiometrics = await auth.canCheckBiometrics;
  print("Biometric available: $canCheckBiometrics");
}
  1. 获取可用的认证器类型:
List<BiometricType> availableBiometrics = await auth.getAvailableBiometrics();
print(availableBiometrics);
  1. 进行认证:
Future<void> authenticate() async {
  try {
    bool authenticated = await auth.authenticate(
      localizedReason: '请验证您的身份',
      options: const AuthenticationOptions(stickyAuth: true),
    );
    if (authenticated) {
      print('认证成功');
    } else {
      print('认证失败');
    }
  } catch (e) {
    print(e);
  }
}

注意:iOS和Android有不同的权限和配置要求,需分别在Info.plist和AndroidManifest.xml中正确配置。同时,确保处理好异常情况和用户体验优化。

Flutter生物识别认证开发指南

在Flutter中实现生物识别认证(指纹/面部识别)非常简单,主要使用local_auth插件。以下是实现步骤:

1. 添加依赖

pubspec.yaml中添加:

dependencies:
  local_auth: ^2.1.0

然后运行flutter pub get

2. 配置平台

Android配置

AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

iOS配置

Info.plist中添加:

<key>NSFaceIDUsageDescription</key>
<string>需要面部识别认证来验证您的身份</string>

3. 基本实现代码

import 'package:flutter/material.dart';
import 'package:local_auth/local_auth.dart';

class BiometricAuthPage extends StatefulWidget {
  @override
  _BiometricAuthPageState createState() => _BiometricAuthPageState();
}

class _BiometricAuthPageState extends State<BiometricAuthPage> {
  final LocalAuthentication auth = LocalAuthentication();
  String _authorized = '未认证';

  Future<void> _authenticate() async {
    try {
      bool canCheckBiometrics = await auth.canCheckBiometrics;
      if (!canCheckBiometrics) {
        setState(() => _authorized = '设备不支持生物识别');
        return;
      }

      List<BiometricType> availableBiometrics = 
          await auth.getAvailableBiometrics();
      
      if (availableBiometrics.isEmpty) {
        setState(() => _authorized = '未设置生物识别');
        return;
      }

      bool authenticated = await auth.authenticate(
        localizedReason: '请验证您的身份',
        options: const AuthenticationOptions(
          biometricOnly: true, // 仅使用生物识别
          useErrorDialogs: true, // 显示系统错误对话框
          stickyAuth: true, // 在应用后台后保持认证状态
        ),
      );

      setState(() {
        _authorized = authenticated ? '认证成功' : '认证失败';
      });
    } catch (e) {
      setState(() => _authorized = '错误: ${e.toString()}');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('生物识别认证')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('认证状态: $_authorized'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _authenticate,
              child: Text('进行生物识别认证'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 高级选项

  • 可以检测支持哪些生物识别方式:指纹、面部识别或虹膜
  • 可以设置fallback验证方式(如PIN码)
  • 可以自定义验证对话框样式

注意事项

  1. 始终要有备用验证方式,以防生物识别失败
  2. 在iOS上,连续多次失败会锁定生物识别功能
  3. 生物识别认证结果不应作为唯一身份验证方式

希望这个教程对你有帮助!如需更详细的功能,可以参考local_auth插件的官方文档。

回到顶部