2024年3月8日发(作者:)
FaceID人脸身份验证接入文档简介FaceID 人脸核身服务提供了“我是我”的真人核验能力,通过姓名、身份证号、人脸识别、动作判断等多种手段来有效的核实使用者的身份,有效防止身份冒用、欺诈等风险。用户使用流程如下:用户按照SDK UI页面的提示,进行点头,摇头,眨眼等动作活体验证。动作通过后,SDK内部会调用FaceID服务器进行云端攻击检测,并开始人脸身份验证。人脸身份验证的结果会返回给SDK,详细信息可以通过我们提供的API进行查询。计费说明按次收费,用户完成一次人脸身份验证才扣费(get_result接口返回值中result_code为1000/2000/3000时计费),未完成的情况不扣费。接入流程图
说明:1. 通过getbiztoken接口获取token2. 下载SDK,集成到客户的APPandroid SDK下载:/faceidopen/sdk/FaceIDZFAC_ SDK下载:/faceidopen/sdk/FaceIDZFAC_1. (可选) 通过get_result接口获取详情下面进行详细阐述第1步:使用get_biz_token获取biz_token调用地址POST fi/face/v2/sdk/get_biz_token签名方式参见阿里云文档:/document_detail/?spm=5176.73-57124001-cmapi029634/t.10.O4CB1x参数
必选/可选必选必选必选可选可选可选可选可选参数类型参数说明liveness_typeidcard_nameidcard_numberimage_ref1image_ref2stringstringstringstringstring刷脸验证流程中的活体类型,当前只支持meglive(动作活体);姓名身份证号由客户提供的参照人脸照片由客户提供的参照人脸照片客户业务流水号,建议设置为您的业务相关的流水串号并且唯一。并会在return 时原封不动的返回给您的服务器,以帮助您确认对应业务的归属。此字段不超过128字节超时时间,默认值为 60,表示用户进入活体识别流程后的超时时间,若未在规定时间完成操作,则本次活体失败动作活体时动作个数:默认3个动作;默认 3, ∈ [1,3]表示对比对结果的严格程度限制,请根据您的场景,选择安全规则,越严格,准确性要求越高,通过率也会相应下降1:宽松(误识率为千分之一);2:标准(误识率为万分之一,默认值);3:严格(误识率为十万分之一);4:非常严格(误识率为百万分之一);表示云端判断为假脸后,是否依然进行比对;0:默认值,云端判断为假脸,则直接返回结果,不执行比对,可以节省成本;1:云端判断为假脸后,依然进行比对对于image_ref1,image_ref2 参考照片,当检测不出人脸时,是否旋转90度、180度、270度后再检测人脸。"1": 默认值,要旋转检测;“0”:不旋转;请注意:设置此参数为1可能会轻微增加误检人脸的概率,如果您明确您的业务场景里不存在非正向的人脸图片、或概率极低,建议勿设置此参数。biz_nostringliveness_timeoutliveness_action_countintint可选security_levelint可选force_compareint可选multi_oriented_detectionint返回值
参数request_idtime_usedbiz_tokenerror类型stringintstringstring参数说明用于区分每一次请求的唯一的字符串。此字符串可以用于后续数据反查。此字段必定返回。整个请求所花费的时间,单位为毫秒。此字段必定返回。调用 SDK 时传入的信息。请求成功时返回。具体返回内容见错误码列表。请求失败时返回。错误码列表HTTP状态码400400错误信息MISSING_ARGUMENTS:
的图像中,没有检测到人脸。param为imageref1、 image_ref2中的一个。请注意:只会有一项,即第一个满足条件的名称。客户上传的图像太大,具体是指像素尺寸的长或宽超过4096像素。为 image_ref1、 image_ref2中的一个。请注意:只会有一项,即第一个满足条件的名称。无效签名调用次数超限、没有调用此API的权限,或者没有以当前方式调用此API的权限并发数超过限制所调用的API不存在客户发送的请求大小超过了20MB限制。该错误的返回格式为纯文本,不是json格式。服务器内部错误,当此类错误发生时请再次请求,如果持续出现此类错误,请及时联系 FaceID 客服或商务400400NO_FACE_FOUND:404413500INVALID_IMAGE_SIZEAUTHENTICATION_ERRORAUTHORIZATION_ERROR:
public static synchronized FaceIdManager getInstance(Context context);参数说明参数Context说明t:建议使用ApplicationContext返回值说明返回值FaceIdManager说明入口类FaceIdManager的单实例对象初始化接口public void init( String bizToken);调用说明必须在调用所有接口前,初始化成功,否则无法正常工作。参数说明参数bizToken说明业务流水号开始检测接口public void startDetect();参数说明参数无说明无返回值说明返回值void说明无返回值设置Init回调接口public void setFaceIdInitListener(FaceIdInitListener listener);
MegLiveDetectListener 说明public interface FaceIdInitListener { void onSuccess (); void onFailed(int code, String msg);}参数codemessage说明Init结果状态码,参见SDK-错误码说明Init结果信息,参见SDK-错误码说明设置Detect回调接口public void setFaceIdDetectListener(FaceIdDetectListener listener);FaceIdDetectListener 说明public interface FaceIdDetectListener { void onSuccess(int code, String msg); void onFailed(int code, String msg);}参数codemessage说明startDetect结果状态码,参见SDK-错误码说明startDetect结果信息,参见SDK-错误码说明获取SDK版本号接口:public String getSdkVersion();参数说明参数无说明无返回值说明返回值String说明SDK版本号获取编译版本号接口:
public String getSdkBuildInfo();参数说明参数无说明无返回值说明返回值String说明SDK编译信息2.2 Android 接入指南(Android Studio)1. 把arr文件复制进入libs文件夹中2. 在APP的gradle中加入:repositories {flatDir{ dirs 'libs' }}1. 在APP的gradle的dependencies中加入:compile(name:'faceid_sdk',ext:'aar')1. Rebuild Project2.3 iOS SDK说明类MGFaceIDDetectManager函数initFaceIdManagerWithToken
函数名方法描述名称说明变量名tokenerrorinitFaceIdManagerWithToken- (instancetype)initFaceIdManagerWithToken:(NSString *__nonnull)token error:(FaceIDDetectError **__nonnull)error;初始化方法活体检测初始化时调此接口说明类型: NSString *说明:业务流水号类型: FaceIDDetectError**
说明: 初始化错误类型,若没有错误,则该参数为空函数startDetect函数名方法描述名称类型说明说明变量名detectVCresultstartDetect- (void)startDetect:(UIViewController *__nonnull)detectVC callback:(FaceIDDetectBlock__nonnull)result;启动FaceID活体检测函数启动FaceID活体检测说明类型: UIViewController *说明: 启动检测的VC类型: FaceIDDetectBlock
说明: 检测结果的block回调。详情请参考(MGFaceIDDetectConfig.h)注意:每次调用startDetect前,请先调用initFaceIdManagerWithToken接口函数getSdkVersion此函是为非必须函数,获取的SDK版本号便于后期定位问题,建议使用;函数名方法描述名称类型说明说明返回值getSdkVersion+ (NSString *_Nonnull)getSdkVersion;获取SDK的版本号函数无NSString*, 一个字符串,表示当前SDK的版本号。函数getSdkBuildInfo
此函是为非必须函数,获取的SDK构筑信息便于后期定位问题,建议使用;函数名方法描述名称类型说明说明返回值getSdkBuildInfo+ (NSString *_Nonnull)getSdkBuildInfo;获取SDK的构筑信息函数无NSString*, 一个字符串。FaceIDDetectBlock回调函数函数名方法描述名称类型说明说明变量名CodeMessageFaceIDDetectBlockDetect的回调函数,返回相应的结果typedef void(^ FaceIDDetectBlock)(NSUInteger Code,NSString* Message);函数无说明类型: NSUInteger
说明:参见SDK-错误码说明类型: NSString*
说明:参见SDK-错误码说明2.4 iOS接入指南SDK介绍SDK 版本: FaceIDZFAC 1.2.0ISDK 集成要求:SDK支持的系统最低要求是
iOS 8.0,只支持真机架构
(arm64和armv7),不支持模拟器架构
(x86_64和i386)。SDK 集成说明:1、添加 SDK 库:将 sdk 文件夹中的
ork 添加到工程中,添加后确保
TARGETS-Build Phases-Link Binary With Libraries 中可以查找到
ork(Required)。如果该
SDK(.framework) 在非
PROJECT 根目录下,请确定在
TARGETS-Build Settings-Framework SearchPaths 选项中添加了该 SDK 所在的目录路径。2、因为该
framework中使用了
category,需要在
Ohter Linker Flags 中添加
-ObjC;3、添加系统依赖:在
TARGETS-Build Phases-Link Binary With Libraries 中添加ork、
ork;4、添加资源:将
resource 文件夹中的资源包
() 添加到工程中,需要勾选(Add to targets) 到指定的
target;5、因为该 SDK 中使用了 C++ 编码,需要工程支持混编 C++。设置
TARGETS-Build Settings-Compile Sources
As 选项为
Objective-C++ 或者将调用该 SDK 的文件后缀名称改为 mm;6、添加硬件权限:因为在 SDK 中调用了系统相机,需要在
中添加
Privacy - Camera UsageDescription ;7、调用 SDK 接口:通过
#import
bitcode 设置。2.5 SDK 错误码说明result_code542550SUCCESSPASS_LIVING_NOT_THE_SAMENO_ID_CARD_NUMBERID_NUMBER_NAME_NOT_MATCHNO_FACE_FOUNDNO_ID_PHOTOPHOTO_FORMAT_ERRORDATA_SOURCE_ERRORFAIL_LIVING_FACE_ATTACKREPLACED_FACE_ATTACKBIZ_TOKEN_DENIEDAUTHENTICATION_FAILMOBILE_PHONE_NOT_SUPPORTSDK_TOO_OLDMOBILE_PHONE_NO_AUTHORITYUSER_CANCELLATIONUSER_TIMEOUTVERIFICATION_FAILUREUNDETECTED_FACEACTION_ERRORIPNOTALLOWEDNON_ENTERPRISE_CERTIFICATIONBALANCE_NOT_ENOUGHMORE_RETRY_TIMESACCOUNT_DISCONTINUEDresult_message含义解释待比对照片与权威数据照片比对结果是同一个人待比对照片与权威数据照片比对结果不是同一个人权威数据无此身份证号身份证号,姓名不匹配权威数据照片中找不到人脸无法获取权威数据照片权威数据照片格式错误其他权威数据照片错误未经过活体判断,可能的原因:是假脸攻击发生换脸攻击,在做活体过程中出现两张不相同的人脸传入的 biz_token 不符合要求鉴权失败,鉴权过程中非biz_token的错误手机在不支持列表里SDK版本过旧,已经不被支持没有权限(运动传感器、存储、相机)用户活体失败,可能原因:用户取消了用户活体失败,可能原因:验证过程超时用户活体失败,可能原因:验证失败用户活体失败,可能原因:未检测到人脸用户活体失败,可能原因:用户动作错误;不允许访问的IP客户未进行企业认证余额不足获取服务器配置时超过重试次数用户帐号已停用
556690EXPIRED_SIGNINVALID_SIGNREPLAY_ATTACKUSER_CANCELNO_CAMERA_PERMISSIONILLEGAL_PARAMETERDEVICE_NOT_SUPPORTINVALID_BUNDLE_IDNETWORK_ERRORFACE_INIT_FAILLIVENESS_DETECT_FAILEDNO_SENSOR_PERMISSIONNO_WRITE_EXTERNAL_STORAGE_PERMISSIONINIT_FAILEDLIVING_NOT_STARTLIVING_IN_PROGRESSLIVING_OVERTIMEUNKOWN_ERRORIMAGE_ERROR_UNSUPPORTED_FORMAT:MISSING_ARGUMENTS:
或商务第3步(可选):使用get_result获取详细信息接口说明查询比对的结果调用地址GET fi/face/v2/sdk/get_result签名方式参见阿里云文档: /document_detail/?spm=5176.73-57124001-cmapi029634/t.10.O4CB1x参数必选/可选必选参数biz_token类型String参数说明FaceID回调给客户的biz_token信息返回值
参数request_idbiz_notime_usedbiz_tokenresult_coderesult_message类型stringstringintstringintstring说明用于区分每一次请求的唯一的字符串。此字符串可以用于后续数据反查。此字段必定返回。传入的业务流水号,原封不动地返回。整个请求所花费的时间,单位为毫秒。此字段必定返回。字符串,通过get_biz_token获取的唯一串码表示本次验证的结果状态码,参见下面详述开发者可通过此字段信息知晓具体的原因,参见下面详述人脸比对的详细结果,可能的字段如下:- idcard: Json类型, 表示活体照片和权威数据比对的结果,具体包括以下字段:-- confidence: 比对结果的置信度,Float类型,取值[0,100],数字越大表示两张照片越可能是同一个人。-- thresholds: 一组用于参考的置信度阈值,Json类型,包含三个字段,均为Float类型、取值[0,100]:
--- 1e-3: 误识率为千分之一的置信度阈值;
--- 1e-4: 误识率为万分之一的置信度阈值;
--- 1e-5: 误识率为十万分之一的置信度阈值;
--- 1e-6: 误识率为百万分之一的置信度阈值;
- ref1: Json类型,表示活体照片和imageref1的比对结果,字段和上面的相同。
- ref2: Json类型,表示活体照片和imageref2的比对结果,字段和上面的相同。活体照片, 字段如下:
image_best: 活体检测获得的最优照片,base64编码。该照片会和权威照片或者用户上传的参考照片进行比对。HTTP status code非200时返回,参见下面详述(HTTP状态码和对应的ERROR字段说明)verificationobjectimageserrorobjectstringResultcode&resultmessage说明result_code11004200result_messageSUCCESSPASS_LIVING_NOT_THE_SAMENO_ID_CARD_NUMBERID_NUMBER_NAME_NOT_MATCHNO_FACE_FOUNDNO_ID_PHOTOPHOTO_FORMAT_ERRORDATA_SOURCE_ERRORFAIL_LIVING_FACE_ATTACKREPLACED_FACE_ATTACKBIZ_TOKEN_DENIEDAUTHENTICATION_FAILMOBILE_PHONE_NOT_SUPPORTSDK_TOO_OLD含义解释待比对照片与权威数据照片比对结果是同一个人待比对照片与权威数据照片比对结果不是同一个人权威数据无此身份证号身份证号,姓名不匹配权威数据照片中找不到人脸无法获取权威数据照片权威数据照片格式错误其他权威数据照片错误未经过活体判断,可能的原因:是假脸攻击发生换脸攻击,在做活体过程中出现两张不相同的人脸传入的 biz_token 不符合要求鉴权失败手机在不支持列表里SDK版本过旧,已经不被支持
42MOBILE_PHONE_NO_AUTHORITYUSER_CANCELLATIONUSER_TIMEOUTVERIFICATION_FAILUREUNDETECTED_FACEACTION_ERRORIPNOTALLOWEDNON_ENTERPRISE_CERTIFICATIONBALANCE_NOT_ENOUGHMORE_RETRY_TIMESACCOUNT_DISCONTINUEDEXPIRED_SIGNINVALID_SIGNREPLAY_ATTACKUSER_CANCELNO_CAMERA_PERMISSIONILLEGAL_PARAMETERDEVICE_NOT_SUPPORTINVALID_BUNDLE_IDNETWORK_ERRORFACE_INIT_FAILLIVENESS_DETECT_FAILEDNO_SENSOR_PERMISSIONINIT_FAILEDLIVING_NOT_STARTLIVING_IN_PROGRESSLIVING_OVERTIME没有权限(运动传感器、存储、相机)用户活体失败,可能原因:用户取消了用户活体失败,可能原因:验证过程超时用户活体失败,可能原因:验证失败用户活体失败,可能原因:未检测到人脸用户活体失败,可能原因:用户动作错误;不允许访问的IP客户未进行企业认证余额不足获取服务器配置时超过重试次数用户帐号已停用签名过期无效的签名重放攻击,单次有效的签名被多次使用用户取消没有打开相机的权限,请开启权限后重试传入参数不合法无法启动相机,请确认摄像头功能完好信息验证失败,请重启程序或设备后重试连不上互联网,请连接上互联网后重试无法启动人脸识别,请稍后重试活体检测不通过无法读取运动数据的权限,请开启权限后重试初始化失败活体验证没有开始正在进行验证操作超时,由于用户在长时间没有进行操作HTTP状态码和对应的ERROR字段说明
发布评论