/v2/identity/historical_selfie_verification
优质
小牛编辑
138浏览
2023-12-01
1.接口描述
该API的功能是(v2版本带签名认证)将两张人脸图片进行比对,来判断是否为同一个人。
图片要求
- 格式为 JPG(JPEG),BMP,PNG,GIF,TIFF
- 宽和高大于 8px,小于等于4000px
- 小于等于 5 MB
支持自动识别人脸方向
- 上传的图片中包含有 exif 方向信息,先按此信息旋转、翻转后再做识别人脸方向并调整
- 如果照片方向混乱且 exif 方向信息不存在或不正确,自动识别人脸方向并调整
请求方式:
POST
请求URL:
https://cloudapi.linkface.cn/v2/identity/historical_selfie_verification
2.请求参数
字段 | 类型 | 必需 | 描述 |
---|---|---|---|
api_id | string | 是 | API 账户 |
sequence_id | string | 是 | 客户请求流水号,建议唯一性 |
selfie_file | file | 见下方注释 | 第一张图片的selfie_file,本地上传选取此参数 |
selfie_url | string | 见下方注释 | 第一张图片的url,从网络获取时选取此参数 |
selfie_image_id | string | 见下方注释 | 第一张图片的云端id,在云端上传过可选取此参数 |
selfie_auto_rotate | boolean | 否 | 开启第一张图片自动旋转功能。开通:true,不开通:false。默认false |
historical_selfie_file | file | 见下方注释 | 第二张图片的selfie_file,本地上传选取此参数 |
historical_selfie_url | string | 见下方注释 | 第二张图片的url,从网络获取时需选取此参数 |
historical_selfie_image_id | string | 见下方注释 | 第二张图片的云端id,在云端上传过可选取此参数 |
historical_selfie_auto_rotate | boolean | 否 | 开启第二张图片自动旋转功能。开通:true,不开通:false。默认false |
timestamp | string | 是 | 时间戳 |
sign | string | 是 | 签名(api_id+api_secret+timestamp使用SHA256算法获取) |
注释:
请求参数 selfie_file , selfie_url , selfie_image_id 三选一。
如同时传入多个参数,本API使用顺序为selfie_image_id优先,其次selfie_file 、selfie_url
请求参数 historical_selfie_file, historical_selfie_url, historical_selfie_image_id 三选一。
如同时传入多个参数,本API使用顺序为selfie_image_id优先,其次selfie_file 、selfie_url
参数
selfie_file
与historical_selfie_file
需把图片文件以 multipart/form-data 的形式放到 POST 消息体中。打开自动旋转功能会增加运算时间,请酌情考虑是否开通
签名sign说明:
我们会为每位公有云用户分配一个账户API ID和对应秘钥API SECRET。为了保证安全性,用户的每次接口调用都需要上传一个签名(基于API ID和API SECRET获取)。
Java示例代码:
SHA256Util.getSHA256Str(LF_APP_ID + LF_APP_SECRET + timeStamp) /** * 利用java原生的摘要实现SHA256加密 * * @param str 加密后的报文 */ public static String getSHA256Str(String str) { MessageDigest messageDigest; String encodeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(str.getBytes("UTF-8")); encodeStr = byte2Hex(messageDigest.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encodeStr; } /** * 将byte转为16进制 */ private static String byte2Hex(byte[] bytes) { StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i = 0; i < bytes.length; i++) { temp = Integer.toHexString(bytes[i] & 0xFF); if (temp.length() == 1) { //1得到一位的进行补0操作 stringBuffer.append("0"); } stringBuffer.append(temp); } return stringBuffer.toString(); }
3.输出参数
正常响应 (200
)
字段 | 类型 | 描述 |
---|---|---|
request_id | string | 本次请求的 id |
code | string | 业务响应码。正常为 0000 ,其他值表示失败。详见业务响应码 |
msg | string | 消息说明 |
data | object | 消息体,详见data数组中字段的结构(只有code: 0000调用成功时返回) |
charge | int | 是否收费,1收费,2不收费 |
data
数组中字段的结构:
字段 | 类型 | 描述 |
---|---|---|
confidence | double | 置信度。值为 0~1,值越大表示两张照片是同一个人的可能性越大 |
historical_selfie | object | 第二张图片的云端id,若使用file、url方式上传第二张图片返回此参数 |
selfie | object | 第一张图片的云端id,若使用file、url方式上传第一张图片返回此参数 |
收费标准:code为0000,charge为1时收费;其他情况(code非0000),charge为2,不收费;
成功返回示例:
{
"code":"0000",
"msg":"调用成功",
"charge":1,
"data":{
"confidence":0.3925412595272064,
"historical_selfie":{
"image_id":"3f0668cb68da411cbe8bd25584aa2c26"
},
"selfie":{
"image_id":"2bec99a1048f45ad9736728b1eadf9a5"
}
},
"request_id":"TIDa6f67624006aff4ed49f16868ed407f0"
}
失败返回示例:
{
"request_id": "TID2af751b4bff24be781d60af10bf84101",
"code": "1000",
"msg": "验签失败",
"charge": 2
}
4.业务响应码
code | msg 字段 |
---|---|
0000 | 调用成功 |
1000 | 验签失败 |
1001 | 参数非UTF-8编码 |
1002 | 请求参数错误,具体原因见 reason 字段内容 |
1003 | liveness_data 出错 |
1004 | 图片未检测出人脸 。对应图片见字段 image 所反馈的值 |
1005 | 从网络获取图片超时 |
1006 | 网络地址图片获取失败 |
1007 | 账号或密钥错误 |
1008 | 账号过期,具体情况见 reason 字段内容 |
1009 | 调用频率超出限额 |
1010 | 调用次数超出限额 |
1011 | 无调用权限 |
1012 | 请求路径错误 |
1013 | 图片体积过大。对应图片见字段 image 所反馈的值 |
1014 | 图片不存在。对应图片见字段 image 所反馈的值。 |
1015 | 文件不是图片文件或已经损坏。对应图片见字段 image 所反馈的值 |
1016 | 图片大小或格式不符合要求。对应图片见字段 image 所反馈的值 |
9999 | 服务器内部错误 |