技术使用总结-旷视人脸识别-(APP中H5接入)

本文档详细介绍了旷视FaceID Lite的API使用,包括配置、DTO对象、常量定义和服务实现。主要涉及身份验证、活体检测、身份证信息处理等流程,同时提供了错误码和状态描述的映射。Java实现部分展示了如何通过HttpClient发送请求并解析响应数据,用于获取验证Token和验证结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.文档

	[官方文档](https://faceid.com/pages/documents)

1.application

server:
  port: 80

megvii:
  appKey: XXX
  secret: XXX
    # 验证通过后跳转的页面
  returnUrl: https://www.pilipili.com/
    # 验证后回调的接口
  notifyUrl: https://www.pilipili.com/
  webTitle: 代码生涯

2.dto

@Data
@Builder
public class H5GetResultDTO {
   
   
    @ApiModelProperty(value = "调用此API的api_key", required = true)
    private String api_key;

    @ApiModelProperty(value = "调用此API的api_key的secret", required = true)
    private String api_secret;

    @ApiModelProperty(value = "通过 get_token, notify_url 或者 return_url 返回的活体业务编号。",required = true)
    private String biz_id;

    @ApiModelProperty(value = "是否返回活体图像数据:\n" +
            "0(默认):不需要图像\n" +
            "1:需要返回最佳活体质量图(image_best,当procedure_type为\"video\",\"still\"或\"flash\"时有效)\n" +
            "2:需要返回身份证人像面图像\n" +
            "3:需要返回身份证国徽面图像\n" +
            "4:需要返回所有图像\n" +
            "5:需要返回正脸自拍照片(仅当procedure_type为selfie时有效)\n" +
            "6:需要返回侧脸自拍照片(仅当procedure_type为selfie时有效)", required = true)
    private String return_image;
}

@Data
@Builder
public class H5GetTokenDTO {
   
   

    @ApiModelProperty("调用此API的api_key")
    private String api_key;

    @ApiModelProperty("调用此API的api_key的secret")
    private String api_secret;

    @ApiModelProperty("用户完成或取消验证后网页跳转的目标URL")
    private String return_url;

    @ApiModelProperty("用户完成验证、取消验证、或验证超时后,由FaceID服务器请求客户服务器的URL。")
    private String notify_url;

    @ApiModelProperty("客户业务流水号,该号必须唯一。并会在notify和return时原封不动的返回给您的服务器,以帮助您确认每一笔业务的归属。")
    private String biz_no;

    @ApiModelProperty("验证网页展示用的标题文字,此参数默认为空,此时系统将采用默认的标题。")
    private String web_title;

    @ApiModelProperty("设定本次服务的类型,目前支持的比对类型为“KYC验证”(取值“1”)或“人脸比对”(取值“0”)。传递其他值调用将识别,返回错误码400(BAD_ARGUMENTS)。\n" +
            "“1”表示KYC验证,表示最终的用户自拍照片将于参考照片比对。\n" +
            "“0”表示人脸比对,FaceID将使用用户自己提供的照片(参数image_ref[x])作为比对人脸照。\n" +
            "请注意:\n" +
            "本参数影响验证流程中是否存在身份证拍摄环节:如果为“1”,则可选择包含身份证拍摄;如果为“0”,验证流程中将没有身份证拍摄。\n" +
            "本参数取什么值将决定下面“二选一”参数组使用哪一组参数。")
    private String comparison_type;

    @ApiModelProperty("传递参数“0”,“1”,“2”,“3”或“4”,表示获取用户身份证信息的方法。传递其他值调用将识别,返回错误码400(BAD_ARGUMENTS)。\n" +
            "0:不拍摄身份证,而是通过 idcard_name / idcard_number 参数传入;\n" +
            "1:仅拍摄身份证人像面,可获取人像面所有信息;\n" +
            "2:拍摄身份证人像面和身份证国徽面,可获取身份证所有信息;\n" +
            "3:不拍摄身份证,但会要求用户在界面上输入身份证号和姓名;\n" +
            "4:拍摄身份证人像面或用户输入身份证号和姓名,用户可在界面上自行选择身份证录入方法。注意:该参数只有在控制台中选择使用“浅色主题”时才生效,若未应用浅色主题而传入4,则返回错误码400(BAD_ARGUMENTS)。")
    private String idcard_mode;

    /**
     * idcard_mode = 0 时,idcard_name idcard_number 这两个参数必须传;在其他情况下可以不传,即使传递了也不会使用。
     */
    @ApiModelProperty("idcard_name, 需要KYC验证对象的姓名,使用UTF-8编码;")
    private String idcard_name;
    @ApiModelProperty("idcard_number, 需要KYC验证对象的身份证号,也就是一个18位长度的字符串。")
    private String idcard_number;
}

@Data
@ConfigurationProperties(prefix = "megvii")
@Component
public class MegviiProperties {
   
   
    private String secret;
    private String appKey;
    private String returnUrl;
    private String notifyUrl;
    private String webTitle;

}

3.constant

@Data
public class MsgResult<T> implements Serializable {
   
   
    public static final String CODE_SUCCESS = "0";
    public static final String MESSAGE_SUCCESS = "success";
    @ApiModelProperty("状态码,0成功非0失败")
    private String code;
    @ApiModelProperty("状态码描述,0success非0失败原因")
    private String message;
    @ApiModelProperty("返回数据")
    private T data;

    private MsgResult(String code, String message, T data) {
   
   
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public static MsgResult success() {
   
   
        return new MsgResult(CODE_SUCCESS, MESSAGE_SUCCESS, null);
    }

    public static <T> MsgResult success(T data) {
   
   
        return new MsgResult(CODE_SUCCESS, MESSAGE_SUCCESS, data);
    }

    public static <T> MsgResult success(T data, String message) {
   
   
        return new MsgResult(CODE_SUCCESS, message, data);
    }


    public static MsgResult error(ErrorCode errorCode, String appendMessage) {
   
   
        String message = String.format(errorCode.getMessage(), appendMessage == null ? "" : appendMessage);
        return new MsgResult(errorCode.getCode(), message, null);
    }

    public static
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值