异步批量任务提交

请求规范

  • 请求 URL:

https://isafe.ilivedata.com/api/v1/image/batchCheck/async

  • 接口描述:

图片异步检测接口,图片信息提交后,会对图片进行检测,检测结果会通过回调方式返回,回调配置可在控制台服务配置中配置或者通过参数传入。

  • 图片要求:

    • 图片支持类型:URL, BASE64

    • 图片支持格式:jpg, png, bmp, gif, webp, tiff, heic

    • 图片大小:单张<10M

    • gif图、长图说明:自动将gif图、长图(长宽比大于5的图片)截帧过检,最多5张,gif图长图均按照实际截图张数进行计费

  • HTTP 请求Header:

Header 描述
Content-Type application/json;charset=UTF-8 请求体类型
Accept application/json;charset=UTF-8 接受的返回类型
X-AppId 项目的唯一标识,此值是 <控制台-服务配置>中的项目编号
X-TimeStamp 请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。
Authorization 签名值
  • 请求方法:POST

  • 请求体JSON对象:

    • 公共参数
参数 必需 类型 描述
images 必需 json数组 数组长度不超过20。
子参数 必需 类型 描述
type 必需 Number 1:图片URL 2: 图片BASE64值
注:推荐使用BASE64方式调用,图片URL在网络不佳时可能会造成图片下载缓慢或下载失败等问题
image 必需 String 图片内容,如type=1,则该值为图片URL,如type=2,则该值为图片BASE64值。
strategyId 可选 String 策略编号;不传时使用默认策略DEFAULT
referImage 可选 String 用来做人脸对比的参照图,图片类型需要和image一样,如果image是url,则referImage也要为url,支持的格式:jpg, png;支持图片大小:<10M;
userId 可选 String 唯一的终端用户ID。 用户ID应当不超过32个字符。
userIP 可选 String 用户IP地址
did 可选 String 用户设备ID
dtype 可选 String 用户设备类型:1:iPhone 2:android 3: ipad 4:wphone 5: pc 6:web 7:wap
id 可选 String 扩展字段,可作为标识,透传。
extra 可选 json 扩展字段,可以传多个key和value,透传。比如传游戏服务器和游戏版本两个参数,传入方式:“extra” : {“server”: “123”,“version”:“456”}
  • 新增参数

    参数
    必需
    类型
    描述
    callbackRegion 可选 String 回调区域:默认cn,可选cn,us,eu。不给或不在取值范围内默认使用cn区域发起回调
    callbackUrl 可选 String 回调url:http协议
    callbackSecretKey 可选 String 回调密钥,可自行定义,需要在回调验签方式使用密钥一致,否则无法验证回调数据是否被篡改
  • 请求体示例:

      {
       "images": [
         {
         "id": "abcd",
         "type": 1,
         "userId": "123",
         "image": "http://abc.com/a.jpg",
         },
         {
         "type": 1,
         "userId": "123",
         "image": " http://abc.com/b.jpg",
         }
        ]
      }
    
  • 请求签名:

当用户请求Image Check API时,可以使用appId和secretKey(从“控制台-服务 配置“中获取)对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。

如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。

  • 通过 HTTP 请求 Header 发送签名

方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:

 Authorization: *****
  • 签名计算方法
  1. 构造规范化的请求字符串(Canonicalized Query String)

将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)

CanonicalizedQueryString = hex(sha256(jsonBody))

  1. 构造被签名字符串 StringToSign ("\n" 代表ASCII里的换行符)

    StringToSign = HTTPMethod + “\n” + HostHeaderInLowercase + “\n” + HTTPRequestURI + “\n” + CanonicalizedQueryString <从上一步得到> + “\n” + “X-AppId:” + SAME_APPID_IN_HEADER + “\n” + “X-TimeStamp:” + SAME_TIMESTAMP_IN_HEADER

HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )

使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。

有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104

  1. StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法

  2. 将上一步的结果转换为BASE64串

  3. 将BASE64串放入HTTP请求Header的Authorization

  • 签名示例

下面是appId & secretKey & image的示例

appId=****
secrectKey=****
image_base64="T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."

下面是示例请求体

{
 "type": 2,
 "userId": "12345678",
 "image": "T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
}

生成CanonicalizedQueryString

b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118

生成StringToSign

POST
isafe.ilivedata.com
/api/v1/image/check
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:***
X-TimeStamp:2020-07-31T07:59:03Z

HMAC计算得到的签名

*****

HTTP响应

Content-Type: application/json;charset=UTF-8

结果为JSON格式,请参考以下示例。

  • 返回json字段说明:

返回json为单张图片异步请求结果json对象组成的json数组。

  • 单张图片异步返回json字段说明:
字段名 类型 描述
errorCode Number 错误码:0表示成功
errorMessage String 错误消息
taskId String 任务ID
  • 返回结果示例:

      [
      { 
      "id":"abcd",
      "errorCode":0,
      "taskId":"Telnet-test_99b2bf004d4a4591bfedbba9574e74d4_1702882338368"},
      {"errorCode":0,
      "taskId":"Telnet-test_d8d58cc2ecf14edaafd18692997a1f67_1702882338368"}
      ]
    

错误码

Http状态码 错误码 错误消息
200 0 此字段省略
405 1004 Method Not Allowed
411 1007 Not Content Length
400 1002 API Not Found
400 1003 Bad Request
401 1102 Unauthorized Client
401 1106 Missing Access Token
401 1107 Invalid Token
401 1108 Expired Token
401 1110 Invalid Client
401 2000 Missing Parameter
401 2001 Invalid Parameter