Flutter身份验证插件shuftipro_demo_sdk的使用
Flutter身份验证插件shuftipro_demo_sdk的使用
What is Shufti Pro?
Shufti Pro,一家总部位于英国的软件即服务(SaaS)提供商,是全球领先的实时身份验证服务提供商之一,覆盖230多个国家和地区,帮助企业遵守KYC、KYB和AML法规。该解决方案通过完全自动化的ID验证服务帮助公司确定并克服欺诈风险,包括文件认证、面部验证、同意验证、面部生物识别认证、电话验证、反洗钱筛查和两步验证。
用户友好的界面和简单的API集成流程使企业能够无缝地接纳合法客户,并有助于建立可信赖的B2B关系。Shufti Pro的身份验证服务适用于所有行业,包括金融科技、虚拟资产服务提供商、银行等。选择Shufti Pro可以打击犯罪、提高生产力并增强转化率,这一切只需不到一秒的时间。
Table of Contents
- General Requirements
- Permissions
- SDK Installation Guide
- Verification Types You Can Get
- Integration
- Initiate Request
- Auth Key Object Parameters
- Config Object Parameters
- Request Object Parameters
- Customisations
- HTTP Codes
- Response Logging
- Status Response
- Test IDs
- Contact
- Copyright
General Requirements
最低要求:
- Android 6.0 (API level 23) 或更高版本
- 网络连接
- 摄像头
Permissions
Shufti Pro应用程序需要访问以下权限:
- 摄像头
- 外部存储
注意: 所有权限均由SDK处理。
SDK Installation Guide
在您的项目中,按照以下步骤操作:
- 运行此命令:
dart pub add shuftipro_sdk
(使用dart)或flutter pub add shuftipro_sdk
(使用flutter)。 - 在
pubspec.yaml
中添加依赖项:dependencies: shuftipro_sdk: ^0.0.1
- 转到项目 > android > build.gradle 文件并添加以下内容:
allprojects { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } // 添加这一行 } }
- 导入
'package:shuftipro_flutter_sdk/ShuftiPro.dart'
到您的类中以发送请求给ShuftiPro的SDK。
Verification Types You Can Get:
Shufti Pro的服务分为三种类型。您可以选择其中一种或全部来满足客户的需求。以下是验证服务的类型:
- 带OCR: 嵌入OCR技术的验证服务API可以从用户的身份证件中提取个人身份信息,并作为单一身份验证过程的一部分进行认证。
- 不带OCR: 如果您选择此项服务,客户需要额外提供其他形式的身份证明文件,而不仅仅是验证信息。
- 混合视图验证: Shufti Pro的混合视图包括移动验证和基于HTML5的网页视图,将结果显示给最终用户。验证数据将以JSON对象的形式发送,类似于移动认证格式中的OCR/非OCR。如果
OpenViewParameter
的值设置为true
,则启用混合视图,否则触发其他模型。
Integration
以下是一个示例项目,它将帮助您学习如何集成Shufti Pro的验证API。
Step 1: 创建AuthKeys对象(使用Client ID和Secret Key)
var authObject = {
"auth_type": "basic_auth",
"client_id": clientId,
"secret_key": secretKey,
};
或者使用AccessToken创建AuthKeys对象:
var authObject = {
"auth_type": "access_token",
"access_token": accessToken,
};
AuthKeys对象参数详见此处。
Step 2: 创建Config对象
Map<String, Object> configObj = {
"open_webview": false,
"asyncRequest": false,
"captureEnabled": false,
};
Config对象参数详见此处。
Step 4: 创建Request对象
Map<String, Object> createdPayload = {
"country": "US",
"reference": "12345678",
"language": "EN",
"email": "",
"callback_url": "http://www.example.com",
"redirect_url": "https://www.dummyurl.com/",
"verification_mode": "image_only",
"show_consent": 1,
"show_privacy_policy": 1,
};
// 创建验证对象
Map<String, Object> verificationObj = {
"face": {},
"background_checks": {},
"phone": {},
"document": {
"supported_types": [
"passport",
"id_card",
"driving_license",
"credit_or_debit_card",
],
/* 保持以下字段为空以进行带OCR的请求 */
"name": {
"first_name": "Johon",
"last_name": "Johsan",
"middle_name": "Livone",
},
"dob": "",
"document_number": "19901112",
"expiry_date": "1996-11-12",
"issue_date": "1990-11-12",
"gender": "M",
"backside_proof_required": "1",
},
// 创建与文档相关的对象
"address": {
"full_address": "ST#2, 937-B, los angeles.",
"name": {
"first_name": "Johon",
"last_name": "Johsan",
"middle_name": "Livone",
},
"supported_types": ["id_card", "utility_bill", "bank_statement", "passport", "driving_license"],
},
/* 保持以下字段为空以进行带OCR的请求 */
"consent": {
"supported_types": ["printed", "handwritten"],
"text": "My name is John Doe and I authorize this transaction of \$100/-",
},
};
// 添加面部验证服务到Payload
createdPayload["face"] = verificationObj['face'];
// 添加文档验证服务到Payload
createdPayload["document"] = verificationObj['document'];
// 添加第二个文档验证服务到Payload
createdPayload["document_two"] = verificationObj['document_two'];
// 添加地址验证服务到Payload
createdPayload["address"] = verificationObj['address'];
// 添加同意验证服务到Payload
createdPayload["consent"] = verificationObj['consent'];
Request对象参数详见此处。
Initiate Request
ShuftiproSdk.sendRequest(authObject: authObject,
createdPayload: createdPayload, configObject: configObj);
Auth Key Object Parameters
在此对象中,我们添加验证请求中的授权密钥。
Basic Auth
服务器通过Basic Auth头向客户端提供授权密钥。用户名将使用ID,而Secret Key将用作密码。每次API调用时都会请求此头。
Access Token
Shufti Pro提供了Bearer Access Token授权方法。客户端可以使用新的访问令牌端点生成临时访问令牌。与客户端共享的令牌将在10分钟内有效且只能使用一次。
Config Object Parameters
在此对象中,我们添加用户所需的验证配置。
open_webview
- 必填:否
- 类型:布尔值
- 接受值:
true
,false
- 默认值:
false
此布尔类型参数决定是否运行或终止混合视图。
asyncRequest
- 必填:否
- 类型:布尔值
- 接受值:
true
,false
如果此参数的值设置为True,则客户端会获得控制权并且无需等待验证结果完成。完成后会自动生成自动回调。
captureEnabled
- 必填:否
- 类型:布尔值
- 接受值:
true
,false
此参数标识客户端是否希望在Iframe中打开摄像头。如果值设置为true,则打开摄像头,反之则关闭。
Request Object Parameters
Shufti Pro为其客户提供专属服务,并根据用户需求量身定制。您可以选择一个或多个可选API密钥。如果在文档或地址验证中提供了密钥但未提供值,则会对这些特定密钥执行OCR。
Reference
- 必填:是
- 类型:字符串
- 最小长度:6个字符
- 最大长度:250个字符
这是服务器将随每个响应一起发送的独特参考ID,以便您验证请求。仅允许字母数字值。
Country
- 必填:否
- 类型:字符串
- 长度:2个字符
- 输入2个字符长的ISO 3166-1 alpha-2国家代码。支持的国家列表详见这里。
Language
- 必填:否
- 类型:字符串
- 长度:2个字符
- 输入2个字符长的语言代码,以便按客户需求查看验证结果。如果此键缺失,默认语言英语将被选中。支持的语言列表详见这里。
- 必填:否
- 类型:字符串
- 最小长度:6个字符
- 最大长度:128个字符
此字段表示最终用户的电子邮件。这是一个可选字段。
Callback URL
- 必填:否
- 类型:字符串
- 最小长度:6个字符
- 最大长度:250个字符
这将生成多个服务器到服务器调用,以保持您对验证状态的更新。这样,即使客户中途丢失,您也可以在您的端更新请求状态。
Verification Mode
- 必填:否
- 类型:字符串
- 接受值:
image_only
,video_only
,any
此定义允许用于验证的证明类型。如果视频_only模式,用户将上传视频;如果图像_only模式,用户将上传图像;任何模式允许两种类型的证明。
Show Privacy Policy
- 必填:否
- 类型:字符串
- 接受值:
0
,1
此键指定是否向用户显示隐私政策。如果show_privacy_policy
为0,则不显示隐私政策。
Show Results
- 必填:否
- 类型:字符串
- 接受值:
0
,1
此键指定是否向用户显示验证结果。如果show_results
为0,则不显示验证结果。
Show Consent
- 必填:否
- 类型:字符串
- 接受值:
0
,1
此键指定是否向用户显示同意。如果show_consent
为0,则不显示同意屏幕。
Allow Online
- 必填:否
- 类型:字符串
- 接受值:
0
,1
此键指定是否需要捕获证明。1
值表示用户必须捕获证明以进行验证。
Allow Offline
- 必填:否
- 类型:字符串
- 接受值:
0
,1
此键指定是否需要上传证明。1
值表示用户必须上传证明以进行验证。
Customisations
Shufti Pro支持一组定制选项,这些选项将影响SDK的外观。通过更改<a href="https://github.com/shuftipro/Android_Core_SDK/blob/main/Core%20SDK/ShuftiProCore/app/src/main/res/values/colors.xml" rel="ugc">colors.xml</a>
中相应的变量值,可以自定义按钮颜色和字体。
SDK中的字符串也可以通过<a href="https://github.com/shuftipro/Android_Core_SDK/blob/main/Core%20SDK/ShuftiProCore/app/src/main/res/values/strings.xml" rel="ugc">strings.xml</a>
类进行定制。可以在提供的<a href="https://github.com/shuftipro/Android_Core_SDK/blob/main/Core%20SDK/ShuftiProCore/app/src/main/res/values/strings.xml" rel="ugc">strings.xml</a>
中添加所需语言的翻译。
要应用并使用SDK中的暗色主题/模式,初始化SDK时在config对象中提供相应参数。
Map<String, Object> configObj = {
...
"dark_mode" : false,
};
iOS
要自定义iOS模块的颜色,可以在config对象中使用所选的十六进制值。
Map<String, Object> configObj = {
...
"font_color": "#263B54",
"button_text_color": "#FFFFFF",
"button_background_color": "#1F5AF6",
}
Localization
通过标准的iOS本地化机制,将您自己的Localizable.strings
文件添加到iOS项目中。要更改特定文本,从<a href="https://github.com/shuftipro/Flutter-SDK/tree/main/ios/Runner/en.lproj/Localizable.strings" rel="ugc">这里</a>
复制文件并覆盖相应的键。
Android
要自定义Android模块的UI,可以在<strong>"android>app>src>main>res>values"</strong>
目录中添加相关文件。
Colors
要更改颜色,添加<a href="https://github.com/shuftipro/Flutter-SDK/tree/main/android/app/src/main/res/values/colors.xml" rel="ugc"><strong>colors.xml</strong></a>
文件到<a href="https://github.com/shuftipro/Flutter-SDK/tree/main/android/app/src/main/res/values" rel="ugc"><strong>values</strong></a>
目录并覆盖以下变量:
<color name="light_button_color">#2B6AD8</color>
<color name="light_text_color">#1D2C42</color>
<color name="dark_button_color">#FF7A77</color>
<color name="dark_text_color">#ffffff</color>
<color name="button_text_color">#FFFFFFFF</color>
Localization
要自定义SDK中的文本,添加<strong>strings.xml</strong>
文件到<a href="https://github.com/shuftipro/Flutter-SDK/tree/main/android/app/src/main/res/values" rel="ugc"><strong>values</strong></a>
目录并覆盖定义在<a href="https://github.com/shuftipro/Flutter-SDK/tree/main/android/app/src/main/res/values/strings.xml" rel="ugc">这里</a>
的相应字符串变量。
HTTP Codes
以下是Shufti Pro验证API响应中生成的HTTP代码列表。
HTTP Code | HTTP Message | Message |
---|---|---|
200 | OK | success |
400 | Bad Request | bad request: one or more parameter is invalid or missing |
401 | Unauthorized | unauthorized: invalid signature key provided in the request |
402 | Request Failed | invalid request data: missing required parameters |
403 | Forbidden | forbidden: service not allowed |
404 | Not Found | resource not found |
409 | Conflict | conflicting data: already exists |
500 | Server Error | internal server error |
Response Logging
验证响应将由函数返回。您可以保存或对响应做任何您想做的事情。
var response = await ShuftiproSdk.sendRequest(authObject: AuthObject,
createdPayload: createdPayload, configObject: ConfigObject);
Status Response
如果发出状态请求,Shufti Pro验证API将发送JSON响应。
Reference
这是在请求时提供的用户的唯一请求引用,以便唯一识别响应。
Event
请求事件显示用户的请求状态,并且对于每个响应都不同。更多详细信息请单击此处。
Note
请求无效响应,HTTP状态码400表示请求无效。
Sample Response
{
"reference": "17374217",
"event": "request.declined",
"error": "",
"verification_url": ""
}
更多关于Flutter身份验证插件shuftipro_demo_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter身份验证插件shuftipro_demo_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
shuftipro_demo_sdk
是一个用于身份验证的 Flutter 插件,通常用于与 Shufti Pro 服务集成,以实现身份验证、KYC(了解你的客户)等功能。以下是如何在 Flutter 项目中使用 shuftipro_demo_sdk
的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 shuftipro_demo_sdk
依赖:
dependencies:
flutter:
sdk: flutter
shuftipro_demo_sdk: ^1.0.0 # 请确认最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 SDK
在你的 Dart 代码中导入并初始化 shuftipro_demo_sdk
:
import 'package:shuftipro_demo_sdk/shuftipro_demo_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Shufti Pro Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
_startVerification();
},
child: Text('Start Verification'),
),
),
);
}
void _startVerification() async {
// Initialize the SDK with your credentials
String clientId = 'YOUR_CLIENT_ID';
String clientSecret = 'YOUR_CLIENT_SECRET';
String callbackUrl = 'YOUR_CALLBACK_URL';
ShuftiProDemoSdk.initialize(clientId, clientSecret, callbackUrl);
// Start the verification process
try {
var result = await ShuftiProDemoSdk.startVerification();
print('Verification Result: $result');
} catch (e) {
print('Error during verification: $e');
}
}
}