Flutter身份验证插件feyins_flutter_kyc的使用

Flutter身份验证插件feyins_flutter_kyc的使用

feyins_flutter_kyc 插件是一个功能强大且易于使用的工具,可以为您的 Flutter 应用程序带来必要的了解客户(KYC)功能。

特性

实时活体检测

该插件允许您使用设备的摄像头进行实时活体检测。确保在 KYC 过程中用户是实际存在的,防止欺诈行为。

身份证件扫描

利用先进的计算机视觉技术,从官方身份证件(如护照、驾照、国民身份证等)中提取信息。通过可靠的和准确的数据提取来加速 KYC 过程。

面部匹配

通过比较扫描的身份证图像与用户提供的自拍图像之间的面部特征,增强身份验证。

可定制的UI

根据您的应用品牌和设计需求,调整用户界面。自定义颜色、字体和布局以创建一致的用户体验。

隐私和安全

我们重视用户的隐私和安全。我们的插件实施了行业标准的安全措施,以保护用户数据的安全。

开始使用

要开始使用 feyins_flutter_kyc 插件,请遵循以下步骤:

flutter pub add feyins_flutter_kyc

Android配置

android/app/src/main/AndroidManifest.xml 文件中添加以下内容:

<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />

<activity> 中添加:

android:requestLegacyExternalStorage="true"

android/app/build.gradle 中将 minSdkVersion 设置为 21:

defaultConfig {
    minSdkVersion 21
}

android/build.gradle 中确保 Kotlin 版本为 1.8.0:

buildscript {
    ext.kotlin_version = '1.8.0'
}

身份证扫描

对于身份证扫描,有两种情况需要考虑:关键词和值在同一行(图1),或者关键词和值在下一行(图2)。

图1 图2

EkycServices().openImageScanner() 函数中,传递关键词名称和布尔值:

  • 如果关键词和值在同一行,传递 true
  • 如果关键词和值不在同一行,传递 false

例如:

Map<String, bool> keyWordData = {
    'Name' : false,
    'Date of Birth' : true,
    'NID No' : false
};

现在将这个 keyWordData 传递给 EkycServices().openImageScanner()

ExtractedDataFromId? extractedDataFromId;
extractedDataFromId = await EkycServices().openImageScanner(keyWordData);

ExtractedDataFromId 包含 extractedText。如果 OCR 文本未从这些情况中解析出来,您可以从 extractedText 中操作文本。

面部匹配

运行面部匹配,请访问以下链接并下载文件夹:

https://drive.google.com/drive/folders/1Po7VxJsUcH_W0XOenUHzg_IDu1s3_do8?usp=sharing

下载文件夹并在文件夹目录中运行以下命令(适用于 Ubuntu):

python3 face_match.py

对于 Windows:

python face_match.py

您将在控制台看到类似以下内容的信息:

* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
* Running on http://10.0.3.50:5000

复制最后一个地址并将其与两个图像路径(自拍照和身份证图像)一起传递给 EkycServices().runFaceMatch 函数:

await EkycServices().runFaceMatch("http://10.0.3.50:5000", selfieImage?.path, imageAndText?.imagePath);

完整示例代码

以下是一个完整的示例代码,展示了如何使用 feyins_flutter_kyc 插件。

import 'dart:io';

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'EKYC Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  File? selfieImage;
  ExtractedDataFromId? extractedDataFromId;
  bool? isMatchFace;
  bool isloading = false;
  bool faceMatchButtonPressed = false;
  Map<String, bool> keyWordData = {
    'Name': false,
    'Date of Birth': true,
    'NID No': false
  };

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextButton(
              onPressed: () {
                EkycServices().livenessDetct().then((result) {
                  if (result != null) {
                    print("File path: $result");
                    setState(() {
                      selfieImage = result;
                      Navigator.push(
                        context,
                        MaterialPageRoute(
                            builder: (context) =>
                                ShowImage(selfieImage: selfieImage)),
                      );
                    });
                  } else {
                    print("Liveness detection failed.");
                  }
                }).catchError((error) {
                  print("Error occurred during liveness detection: $error");
                });
              },
              style: TextButton.styleFrom(
                foregroundColor: Colors.white,
                padding: const EdgeInsets.all(16.0),
                backgroundColor: Colors.blue,
                elevation: 9.0,
                textStyle: const TextStyle(
                  fontSize: 20,
                ),
              ),
              child: Text("Liveness Detection"),
            ),
          ],
        ),
      ),
    );
  }
}

class ShowImage extends StatelessWidget {
  File? selfieImage;
  ShowImage({this.selfieImage});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Liveness Detect succesful!"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Image.file(selfieImage!),
            SizedBox(
              height: 20,
            ),
            TextButton(
              onPressed: () {
                Navigator.pop(context);
              },
              style: TextButton.styleFrom(
                foregroundColor: Colors.white,
                padding: const EdgeInsets.all(16.0),
                backgroundColor: Colors.blue,
                elevation: 9.0,
                textStyle: const TextStyle(
                  fontSize: 20,
                ),
              ),
              child: Text("Retake"),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter身份验证插件feyins_flutter_kyc的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter身份验证插件feyins_flutter_kyc的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


feyins_flutter_kyc 是一个用于Flutter应用程序的身份验证插件,通常用于KYC(Know Your Customer)流程。KYC是金融机构和其他企业用来验证客户身份的过程,以确保其合法性。

以下是如何在Flutter项目中使用 feyins_flutter_kyc 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 feyins_flutter_kyc 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  feyins_flutter_kyc: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 以安装依赖。

2. 导入插件

在你的Dart文件中导入插件:

import 'package:feyins_flutter_kyc/feyins_flutter_kyc.dart';

3. 初始化插件

在使用插件之前,通常需要进行初始化。这可能包括设置API密钥或其他配置。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化KYC插件
  await FeyinsFlutterKyc.init(
    apiKey: 'YOUR_API_KEY',
    environment: Environment.sandbox,  // 或 Environment.production
  );
  
  runApp(MyApp());
}

4. 启动KYC流程

你可以通过调用插件提供的方法来启动KYC流程。通常,这涉及到打开一个界面,用户可以在其中上传身份证、自拍照片等信息。

void startKycProcess() async {
  try {
    // 启动KYC流程
    final result = await FeyinsFlutterKyc.startKyc(
      userId: 'USER_ID',  // 用户的唯一标识
      userEmail: 'user@example.com',  // 用户的电子邮件
      userPhone: '+1234567890',  // 用户的电话号码
    );
    
    // 处理KYC结果
    if (result.status == KycStatus.success) {
      print('KYC成功');
    } else {
      print('KYC失败: ${result.message}');
    }
  } catch (e) {
    print('启动KYC流程时出错: $e');
  }
}

5. 处理KYC结果

KYC流程完成后,你可以根据返回的结果进行相应的处理。通常,结果会包含一个状态码和消息。

void handleKycResult(KycResult result) {
  switch (result.status) {
    case KycStatus.success:
      print('KYC成功');
      break;
    case KycStatus.failed:
      print('KYC失败: ${result.message}');
      break;
    case KycStatus.pending:
      print('KYC待处理');
      break;
    default:
      print('未知的KYC状态');
  }
}

6. 处理错误

在使用插件时,可能会遇到各种错误,例如网络问题、API错误等。确保在代码中处理这些错误。

try {
  final result = await FeyinsFlutterKyc.startKyc(
    userId: 'USER_ID',
    userEmail: 'user@example.com',
    userPhone: '+1234567890',
  );
  
  handleKycResult(result);
} catch (e) {
  print('发生错误: $e');
}
回到顶部