百度AI身份验证(公安验证)接口开发

1、准备工作:
创建应用,应用创建见百度AI应用的创建以及AK、SK的获取
2、公安验证需要进行企业实名认证之后才可以使用,且只有一共500次的调用权限,之后需要充值来使用。
3、实现代码如下:

	// 公安验证
	public static String personverify(String accessToken,String fileUrl,String id_card_number,String name) {
        // 请求url
		//String filePath = "C:/Users/32249/Desktop/a.jpg";
        String url = "https://aip.baidubce.com/rest/2.0/face/v3/person/verify";
        String message = "";
        try {
        	byte[] imgData = FileUtil.readFileByBytes(fileUrl);
            String imgStr = Base64Util.encode(imgData);
            Map<String, Object> map = new HashMap<>();
            map.put("image", imgStr);
            map.put("image_type", "BASE64");
            map.put("id_card_number", id_card_number);
            // 活体检测控制
            /*NONE: 不进行控制
            LOW:较低的活体要求(高通过率 低攻击拒绝率)
            NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率)
            HIGH: 较高的活体要求(高攻击拒绝率 低通过率)
                              默认NONE*/
            map.put("liveness_control", "NONE");
            map.put("name", name);
            // 图片质量控制
            /*NONE: 不进行控制
            LOW:较低的质量要求
            NORMAL: 一般的质量要求
            HIGH: 较高的质量要求
                              默认 NONE*/
            map.put("quality_control", "NONE");

            String param = GsonUtils.toJson(map);

            // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
           // String accessToken = "【调用鉴权接口获取的token】";

            String result = HttpUtil.post(url, accessToken, "application/json", param);
            // score	与公安小图相似度可能性,用于验证生活照与公安小图是否为同一人,有正常分数时为[0~100],推荐阈值80,超过即判断为同一人
            System.out.println(result);
            JsonObject jObject =new JsonParser().parse(result).getAsJsonObject();
            String errorCode = jObject.get("error_code").getAsString();
            if("0".equals(errorCode)) {
            	JsonObject resultObject = jObject.getAsJsonObject("result");
				String score = resultObject.get("score").getAsString();
				if(Integer.parseInt(score)>=80) {
					message = "是同一个人";
				}else {
					message = "不是同一个人,请重新上传";
				}
            }else if("222350".equals(errorCode)) {
            	message = "公安网图片不存在或质量过低,请重新上传";
            }else if("222351".equals(errorCode)) {
            	message = "身份证号与姓名不匹配或该身份证号不存在,请重新上传";
            }else if("222352".equals(errorCode)) {
            	message = "身份证名字格式错误,请重新上传";
            }else if("222353".equals(errorCode)) {
            	message = "身份证号码格式错误,请重新上传";
            }else if("222354".equals(errorCode)) {
            	message = "公安库里不存在此身份证号,请重新上传";
            }else if("222355".equals(errorCode)) {
            	message = "身份证号码正确,公安库里没有对应的照片,请重新上传";
            }else if("222356".equals(errorCode)) {
            	message = "验证的人脸图片质量不符合要求,请重新上传";
            }else if("222360".equals(errorCode)) {
            	message = "身份证号码或名字非法(公安网校验不通过),请重新上传";
            }else if("222361".equals(errorCode)) {
            	message = "公安服务连接失败,请重新上传";
            }else if("216600".equals(errorCode)) {
            	message = "输入身份证格式错误,请重新上传";
            }else if("216601".equals(errorCode)) {
            	message = "身份证号和名字匹配失败,请重新上传";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
		return message;
    }

4、测试代码如下:

public static void main(String[] args) {
		TestRenLian testRenLian = new TestRenLian();
		String access_token = testRenLian.getAuth();
		//公安验证
		String wangUrl = "C:/Users/32249/Desktop/a.jpg";
		String id_card_number = "142228199305231011";
		String name = "王彦";
		personverify(access_token,wangUrl,id_card_number,name);
	}

5、注意事项:目前公安验证接口不支持传递网图

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值