/v2/identity/historical_selfie_verification

优质
小牛编辑
138浏览
2023-12-01

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_idstringAPI 账户
sequence_idstring客户请求流水号,建议唯一性
selfie_filefile见下方注释第一张图片的selfie_file,本地上传选取此参数
selfie_urlstring见下方注释第一张图片的url,从网络获取时选取此参数
selfie_image_idstring见下方注释第一张图片的云端id,在云端上传过可选取此参数
selfie_auto_rotateboolean开启第一张图片自动旋转功能。开通:true,不开通:false。默认false
historical_selfie_filefile见下方注释第二张图片的selfie_file,本地上传选取此参数
historical_selfie_urlstring见下方注释第二张图片的url,从网络获取时需选取此参数
historical_selfie_image_idstring见下方注释第二张图片的云端id,在云端上传过可选取此参数
historical_selfie_auto_rotateboolean开启第二张图片自动旋转功能。开通:true,不开通:false。默认false
timestampstring时间戳
signstring签名(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_idstring本次请求的 id
codestring业务响应码。正常为 0000 ,其他值表示失败。详见业务响应码
msgstring消息说明
dataobject消息体,详见data数组中字段的结构(只有code: 0000调用成功时返回)
chargeint是否收费,1收费,2不收费

data数组中字段的结构:

字段类型描述
confidencedouble置信度。值为 0~1,值越大表示两张照片是同一个人的可能性越大
historical_selfieobject第二张图片的云端id,若使用file、url方式上传第二张图片返回此参数
selfieobject第一张图片的云端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.业务响应码

codemsg 字段
0000调用成功
1000验签失败
1001参数非UTF-8编码
1002请求参数错误,具体原因见 reason 字段内容
1003liveness_data 出错
1004图片未检测出人脸 。对应图片见字段 image 所反馈的值
1005从网络获取图片超时
1006网络地址图片获取失败
1007账号或密钥错误
1008账号过期,具体情况见 reason 字段内容
1009调用频率超出限额
1010调用次数超出限额
1011无调用权限
1012请求路径错误
1013图片体积过大。对应图片见字段 image 所反馈的值
1014图片不存在。对应图片见字段 image 所反馈的值。
1015文件不是图片文件或已经损坏。对应图片见字段 image 所反馈的值
1016图片大小或格式不符合要求。对应图片见字段 image 所反馈的值
9999服务器内部错误