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

    @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);//版本号versionMap 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里面的值转为maplistw.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数据需要设置contentTypepost.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;}

腾讯云人脸识别接口demo相关推荐

  1. java腾讯云人脸识别接口

    1,引入maven依赖 2, public class TenXunUtil { // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密 // ...

  2. 腾讯云人脸识别接口的使用

    文档地址:人脸识别简介_人脸识别购买指南_人脸识别操作指南-腾讯云 API Explorer 该工具提供了在线调用.签名验证.SDK 代码生成和快速检索接口等能力,能显著降低使用云 API 的难度,推 ...

  3. 调用阿里云人脸识别接口示例

    下面我为大家展示一下我调用阿里云人脸识别接口的示例 首先说下开发环境,springboot 开发的 org.apache.commons.codec.binary.Base64; 这个主要是用来进行b ...

  4. 腾讯云—人脸识别应用实践

    序: 人脸识别是目前应用较广泛的AI产品服务,但在售前接触客户中,发现很多销售同学和客户对于人脸识别的认识不够全面,从而在使用和计价过程中遇到较多的问题,所以通过这篇博客个人总结一些应用架构实践,帮助 ...

  5. 百度云人脸识别接口+python+opencv做的表情包合成器

    第一次使用python,所以语法有些凌乱. 菜鸟随便做的一个小东西. 开发环境:win10+anaconda3.0+python3.6+opencv2+pyqt5 一.anaconda安装 下载链接: ...

  6. 阿里云人脸识别接口--心得分享

    一:对接阿里云人脸识别接口的工具类 注意:如果你的图片已经转换为base64的编码以后参数是content_1,后面要加type请求参数,我这里是通过图片的url对比的 public class Fa ...

  7. 阿里云人脸识别接口调用卡顿,超时

    阿里云人脸识别接口调用卡顿 在服务端通过pom引入阿里云人脸识别sdk的时候,如果生产环境在内网开通了网络策略连接了 cloudauth.aliyuncs.com 这个地址. 但是sdk调用人脸识别服 ...

  8. Python爬取《创造营2020》小姐姐数据并用腾讯云人脸识别做颜值评分

    最近 创造营2020好多小姐姐吸引到我了,于是就有这这个 颜值100分的小姐姐高达21位 比如前段时间抖音很火的 凡凡 以下是代码,需要你在申请腾讯云有关参数替换哦 # -*- coding: utf ...

  9. Python爬取《创造营2020》小姐姐数据用腾讯云人脸识别做颜值评分

    最近 创造营2020好多小姐姐吸引到我了,于是就有这这个 颜值100分的小姐姐高达21位比如前段时间抖音很火的 凡凡 以下是代码,需要你在申请腾讯云有关参数替换哦 # -*- coding: utf- ...

最新文章

  1. python购物车程序详解用字典_Python_购物车程序[列表嵌套字典]
  2. Linux之查看目录命令
  3. PNAS:水稻微生物组
  4. XenServer 6 自动启动虚拟机
  5. Android两种常见错误(ANR和FC)解决办法
  6. 跟着编程之美学算法——最长递增子序列(转)
  7. 精通Hibernate类与类关联关系:[三]映射一对多双向自身关联关系
  8. STM32-关于Proteus 仿真无法运行STM32CubeMX自动生成的代码
  9. [转载]数字全息与计算全息
  10. 【Java】JavaSocket编程开发聊天室-总览与部分客户端界面
  11. java font 字体 隶书_font-style字体设置
  12. 10个谷歌浏览器调试技巧
  13. SQL SERVER 2016安装部署
  14. 攻防实战 | 芙蓉区网络安全技能大比武暨网络安全应急攻防演练圆满结束!
  15. 【涨知识】国内外点云处理著名研究团队
  16. 我们是如何连上WiFi的?
  17. java毕业设计校园互助平台校园帮帮网站源码+lw文档+mybatis+系统+mysql数据库+调试
  18. 在iframe中写html,使用jQuery在iframe中获取HTML
  19. 大地坐标和高斯平面坐标转换
  20. linux安装微软雅黑等字体

热门文章

  1. 下拉刷新和上拉加载 php,基于iscroll.js实现下拉刷新和上拉加载效果
  2. Vue-cli+Element(table多级表头及遍历表头)
  3. js 数值运算变成字符串拼接
  4. Nginx 启动配置文件
  5. 什么是先验概率?什么是后验概率?
  6. STC89C52 51单片机实现闹钟功能 #目前的时间倒计时 #选择位置闪烁 #计时 #清屏 #停止计时 #选择位置加减数字 #存储目前的数据 #读出目前的数据 #输入特定时间
  7. flyway常用配置_flyway使用指南
  8. 数据分析matplotlibnumpy
  9. oracle 复合索引
  10. finebi实现对环境基础数据可视化图表分析