腾讯云人脸识别接口demo

身份认证接口:姓名+身份证号+本人照片

    @ApiOperation(value = "自拍照+身份信息模式", notes = "自拍照+身份信息模式")
    @PostMapping(path = "/easyface")
    public @ResponseBody BaseResult easyface(@RequestBodyWithValid EasyfaceVo easyfaceVo) throws Exception {
        log.info("easyface 入参 {}", easyfaceVo.toString());
        String url = "https://ida.webank.com/api/paas/easyface";
        JSONObject itemJSONObj = JSONObject.parseObject(JSON.toJSONString(easyfaceVo));
        String resp = HttpUtil.doPost(url, itemJSONObj);
        JSONObject jsonObject = JSON.parseObject(resp);

        return new  BaseResult(jsonObject);
    }

对外接口,获取签名及相关信息

    @ApiOperation(value = "获取人脸识别签名方法", notes = "获取人脸识别签名方法")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "idCardNo", value = "身份证号码", required = true, dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "name", value = "姓名", required = true, dataType = "String", paramType = "query")
    })
    @GetMapping(path = "/getFaceVerificationSign")
    public @ResponseBody BaseResult getFaceVerificationSign(@RequestParam("idCardNo")String idCardNo, @RequestParam("name")String name) {
        Map map = faceVerificationImpl.getFaceVerificationSignMap(idCardNo, name);
        return new  BaseResult(map);
    }

签名生成函数
这里的注意点是nonce 随机数32位随机串(字母+数字组成的随机数)在所有的地方都应该是一样的

    /*
    * 提供前端调用身份验证接口的参数
    * */
    public Map getFaceVerificationSignMap(String idCardNo, String name) {
        Map map = getFaceVerificationSign(idCardNo);
        Map returnMap = new HashMap();
        returnMap.putAll(map);
        returnMap.put("webankAppId", appId);
        //String nonce =getZhiDingRandomNumStr(32,"NONCE");//32位随机码
        //returnMap.put("nonce", nonce);
        returnMap.put("version", version);
        returnMap.put("orderNo", idCardNo);
        returnMap.put("name", name);
        returnMap.put("idNo", idCardNo);
        returnMap.put("userId", idCardNo);
        return returnMap;
    }
    /*
    * 生成签名  SIGN 类型
    *
    * */
    public  Map getFaceVerificationSign(String userId){
        String ticket =  getFaceSignTicket();
        log.info("ticket  {}", ticket);
        List<String> stringList = new ArrayList<>();
        stringList.add(appId);
        stringList.add(userId);//orderNo订单号,本次人脸核身合作伙伴上送的订单号,唯一标识
        String nonceStr =getZhiDingRandomNumStr(32,"NONCE");//32位随机码
        stringList.add(nonceStr);//nonce	随机数32位随机串(字母+数字组成的随机数)
        stringList.add(version);//版本号version

        Map map = new HashMap();
        String sign = signAlgorithm(stringList,ticket);
        map.put("sign",sign);
        log.info("nonceStrLength={}",nonceStr.length());
        map.put("nonce",nonceStr);
        return map;
    }
        /**
     * 获取SIGN ticket
     * @return
     */
    public   String getFaceSignTicket(){
        String tickt = redisCache.getCache("face_sign_tickt", String.class);
        //String tickt = null;
        if(tickt != null && !"".equals(tickt)){
            return tickt;
        }

        String accessToken = getRequestFaceAccessToken();
        StringBuffer url = new StringBuffer("https://idasc.webank.com/api/oauth2/api_ticket");
        url.append("?app_id=").append(appId);
        url.append("&access_token=").append(accessToken);
        url.append("&type=").append("SIGN");
        url.append("&version=").append(version);
        String returnData = HttpUtil.get(url.toString());
        log.info("getFaceNonceTicket获取NonceTicket信息::{}",returnData);
        if(returnData != null && !"".equals(returnData)){
            JSONObject jsonObject = JSON.parseObject(returnData);
            Map<String, Object> map = JSONObject.toJavaObject(jsonObject, Map.class);
            log.info("getFaceSignTicket获取NonceTicket信息::{}",map);
            String tickets =  map.get("tickets") != null ? map.get("tickets").toString() : null;

            if(tickets != null){
                JSONArray jsonObjectT = JSON.parseArray(tickets);
                List<Map<String,Object>> listw = new ArrayList<Map<String,Object>>();
                for (Object object : jsonObjectT) {
                    Map <String,Object> ret = (Map<String, Object>) object;//取出list里面的值转为map
                    listw.add(ret);
                }
                tickt =listw.get(0).get("value").toString();// map1.get("value") != null ? map1.get("value").toString() : null;
                redisCache.putCacheWithExpireTime("face_sign_tickt", tickt, 60*20);
                return tickt;
            }

        }
        return null;
    }

姓名+身份号+人脸照片验证
照片不需要前置的Base64等格式字样
在这里插入图片描述

  • 调用第三方接口时的函数 StringEntity entity = new StringEntity(json.toString(),“utf-8”);要如此设置传值为utf-8, 否则传中文时会无法识别。
 public static String doPost(String url, JSONObject json){
        // 创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost post = new HttpPost(url);
        CloseableHttpResponse response = null;
        try {
            //StringEntity reqEntity = new StringEntity(params,"utf-8");
            StringEntity entity = new StringEntity(json.toString(),"utf-8");
            //entity.setContentEncoding("UTF-8");
            entity.setContentType("application/json"); // 发送json数据需要设置contentType
            post.setEntity(entity);
            response = httpClient.execute(post);
            if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                // 返回json格式
                return EntityUtils.toString(response.getEntity());
            }
        } catch (Exception e) {
            log.error("通讯异常,异常信息:[{}]", e);
        }
        finally {
            if (httpClient != null) {
                try {
                    httpClient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (response != null){
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
 
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
## 使用前准备​ 1. 前往注册: [腾讯云账号注册](https://cloud.tencent.com/register) (详细指引见 [注册腾讯云](https://cloud.tencent.com/document/product/378/9603)) 2. 取得存储桶名称 **BucketName**: 请前往 [创建存储桶](https://cloud.tencent.com/document/product/460/10637) 3. 取得 **APPID**、**SecretId**、**SecretKey**:请前往 [云API密钥](https://console.cloud.tencent.com/cam/capi) ,点击“新建密钥” ## 快速体验 1. 修改文件 src/main/java/com/qcloud/image/demo/Demo.java 的 main() 方法,填入上述申请到的 **APPID**、**SecretId**、**SecretKey**、**BucketName** 2. 导入到 IDE:工程用 Maven 构建,以 Intellij IDEA 为例,导入方式为:Import Project -> 选择工程目录 -> Import project from external model -> Maven 3. 运行:Demo.java 右键,Run Demo.main() ## 使用简介 ### 初始化 ```java ImageClient imageClient = new ImageClient(APPID, SecretId, SecretKey); ``` ### 设置代理 根据实际网络环境,可能要设置代理,例如: ```java Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress("127.0.0.1", 8080)); imageClient.setProxy(proxy); ``` ### 使用 SDK 提供功能如下: **图像识别**:鉴黄,标签 **文字识别(OCR)**:身份证,名片,通用,驾驶证行驶证,营业执照,银行卡,车牌号 **人脸识别**:人脸检测,五官定位,个体信息管理,人脸验证,人脸对比及人脸检索 **人脸核身**:照片核身(通过照片和身份证信息),获取唇语验证码(用于活体核身),活体核身(通过视频和照片),活体核身(通过视频和身份证信息) ```java // 调用车牌识别API示例 String imageUrl = "http://youtu.qq.com/app/img/experience/char_general/icon_ocr_license_3.jpg"; String result = imageClient.ocrPlate(new OcrPlateRequest("bucketName", imageUrl)); System.out.println(result); ``` 更多例子详情可参见 [Demo.java](https://github.com/tencentyun/image-java-sdk-v2.0/blob/master/src/main/java/com/qcloud/image/demo/Demo.java) 的代码。 ## 集成到你的项目中 ### 获得 SDK jar 文件 1. 直接使用 release/*-with-dependencies.jar 2. 自行编译:在工程根目录下执行命令 `mvn assembly:assembly`,编译结果见 target/*-with-dependencies.jar ### 导入 jar 文件 根据项目具体情况导入 *-with-dependencies.jar
Uniapp是一款基于Vue.js框架开发的跨平台应用开发框架,它可以将我们的Vue代码编译成不同平台的原生应用。而腾讯云人脸识别活体检测是一项用于识别人脸并验证其真实性的技术,可以用于安全认证、人脸支付等场景。 在Uniapp中对接腾讯云人脸识别活体检测,我们可以按以下步骤进行: 1. 注册并创建腾讯云账号,开通人脸识别服务,并获取到相关的API密钥和访问密钥。 2. 在Uniapp项目中引入相关的插件或库,比如uni-app-faceid插件,该插件是为了方便Uniapp与腾讯云人脸识别服务进行交互而开发的。 3. 在Uniapp的页面中,使用插件提供的组件或方法,调用腾讯云人脸识别服务的接口,传递待识别的人脸图像数据。 4. 接收腾讯云人脸识别服务返回的结果,根据返回的结果判断活体检测是否通过。 需要注意的是,在使用腾讯云人脸识别活体检测时,我们需要保证传入的人脸图像质量较高,且能够满足腾讯云人脸识别服务的要求,例如需要清晰可见的人脸图像。 除了以上步骤,根据具体需求,我们还可以根据腾讯云人脸识别服务的其他功能,如人脸比对、人脸搜索等,进行更高级的功能扩展。 总之,Uniapp与腾讯云人脸识别活体检测的对接,需要通过引入插件或库来实现与腾讯云交互,并根据返回结果判断活体检测是否通过。这样我们就可以在Uniapp项目中应用腾讯云人脸识别服务,实现更广泛的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值