/v2/identity/historical_selfie_verification

1.接口描述

该API的功能是(v2版本带签名认证)将两张人脸图片进行比对,来判断是否为同一个人。

  • 图片要求

    1. 格式为 JPG(JPEG),BMP,PNG,GIF,TIFF
    2. 宽和高大于 8px,小于等于4000px
    3. 小于等于 5 MB
  • 支持自动识别人脸方向

    1. 上传的图片中包含有 exif 方向信息,先按此信息旋转、翻转后再做识别人脸方向并调整
    2. 如果照片方向混乱且 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_filehistorical_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 服务器内部错误

results matching ""

    No results matching ""