人脸对外接口
该部分描述SID应向应用提供的标准接口,以便外部应用调用,每个API需要携带认证参数,在请求头中,token获取token获取。标准接口如下:
一、1:1 认证接口(特征值或照片)
应用上传一张照片或特征值与 SID中保存的底库照片或特征值进行比对。
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/auth/compare/userId
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
使用特征值比对:
// 使用特征值比对参数如下:
{
"featureB":"xTKzP.....ACAPw==",
"userId" : "testface"
}
// 使用照片比对参数如下:
{
"imageB":{
"image":"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==",
"ext":"jpg"
},
"userId" : "testface"
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
userId | String | 是 | 用户的账号 |
featureB | String | 如传输imageB则不用传输此参数 | 照片的特征值 |
imageB | 对象 | 如传输featureB则不用传输此参数 | 照片对象 |
image | String | 是 | 照片的base64 |
ext | String | 是 | 照片后缀 |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"userId": "testface",
"image": "/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg",
"score": 0.9973,
"appScore": 0.63,
"hasPass": true,
"hasPermission": null
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 用户账号 |
image | String | 照片对应的存储路径 |
score | Double | 相似值 |
appScore | Double | 厂商相似值标准 |
hasPass | Boolean | 照片是否通过 |
二、1:N 认证接口(特征值或照片)
应用上传一张照片或特征值,并在 SID中保存的底库照片或特征值进行比对,获取相似度最高的人的信息。
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/auth/search
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"feature":"xTKzP.....ACAPw==",//(与file二选一)
"file":{ //(与feature二选一)
"image":"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==",
"ext":"jpg"
}
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
feature | String | 如传输file则不用传输此参数 | 照片的特征值 |
file | 自定义对象 | 如传输feature则不用传输此参数 | 照片对象 |
image | String | 是 | 照片的base64 |
ext | String | 是 | 照片后缀 |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"userId": "testface",
"image": "/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg",
"score": 0.9973,
"appScore": 0.63,
"hasPass": true,
"manyIds": [{
"userId":"testface",
"identityCode":"01"
}],
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 用户账号 |
image | String | 照片对应的存储路径 |
score | Double | 相似值 |
appScore | Double | 厂商相似值标准 |
hasPass | Boolean | 照片是否通过 |
manyIds | 自定义对象 | 用户的所有身份信息 |
—userId | String | 所有身份信息的用户账号 |
—identityCode | String | 所有身份信息的身份code |
三、增量同步照片接口(有水印或不加水印)
应用根据时间戳增量同步照片接口。
需要配置一下配置权限:应用->应用管理->应用配置修改页->人脸服务配置->比对生物数据类型(选择照片)
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/face/findIncreaseUserFaceImage
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"currentPage": 1,
"timeStamp": 2,
"pageSize": 10,
"types": [
"100"
]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
currentPage | int | 是 | 分页页码 |
pageSize | int | 是 | 分页每页大小 |
timeStamp | long | 是 | 应用上次同步照片的时间。SID从该时间戳以后开始同步照片 |
types | List |
是 | 照片类型code |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"pageSize": 10,
"pageNum": 1,
"totalAmount": 3,
"results": [
{
"userId": "james",
"faceId": "5f70993cecf37300063840c2",
"imageUrl": "/group1/M00/00/05/rBEITl9wmT2AGYY7AADBdIqeHWk671.jpg",
"timeStamp": 1603768753929,
"face": [
{
"type": "100",
"image": "/9j/4AAQS......RghD83GR//Z",
"fileName": "rBEITl9wmT2AGYY7AADBdIqeHWk671.jpg",
"updateTime": 1601214816398,
"clientIsAuthorization":true
}
],
"deleted": false,
"clientIsAuthorization":true
},
{
"userId": "5f86c39d9d72dd0006678544",
"faceId": "5f86c3dfebd1ae000631fa04",
"imageUrl": "/group1/M00/00/07/rBEITl-Gw-CALhSGAAFlVfs2oiA611.jpg",
"timeStamp": 1603768052435,
"face": [
{
"type": "100",
"image": "/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==",
"fileName": "rBEITl-Gw-CALhSGAAFlVfs2oiA611.jpg",
"updateTime": 1607937942726,
"clientIsAuthorization":true
}
],
"deleted": true,
"clientIsAuthorization":true
}
]
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
pageSize | int | 分页每页长度 |
pageNum | int | 分页页码 |
totalAmount | int | 需要同步照片的人员总数 |
results.userId | String | 账号 |
results.faceId | String | 用户id |
results.imageUrl | String | 回显照片的存储路径 |
results.timeStamp | long | 照片变动时间戳(毫秒) |
results.deleted | boolean | 照片是否被删除。 true=删除,false=新增或修改 |
results.clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则imageUrl字段为空 |
results.face.type | String | 照片类型code |
results.face.image | String | 照片base64 |
results.face.fileName | String | 照片名称 |
results.face.updateTime | long | 照片上传时间 |
results.face.clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则image、fileName字段为空 |
注:照片类型code: 底库照片=100 (支持字符串 01),生活照=201,职业照=202。
四、增量同步特征值接口
应用根据时间戳增量同步特征值接口。
需要配置一下配置权限:应用->应用管理->应用配置修改页->人脸服务配置->比对生物数据类型(选择特征值)
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/face/findIncreaseUserFace
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"currentPage":1,
"pageSize":100,
"timeStamp":0
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
currentPage | int | 是 | 分页页码 |
pageSize | int | 是 | 分页每页大小 |
timeStamp | long | 是 | 应用上次同步照片的时间。SID从该时间戳以后开始同步照片 |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"pageSize": 100,
"pageNum": 1,
"totalAmount": 1,
"orders": null,
"results": [
{
"userId": "testface",
"imageUrl": "/group1/M00/00/09/rBEITl-XkxaAIRZjAAFRPYtJz1g042.jpg",
"timeStamp": 1603769154390,
"images": [
{
"feature": "1utfPYb5ur2ADCg97r......ACAPw==",
"type": "100",
"totalSource": 0.68,
"updateTime": 1603769129918,
"clientIsAuthorization":true
}
],
"deleted": false,
"clientIsAuthorization":true
}
]
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
pageSize | int | 分页每页长度 |
pageNum | int | 分页页码 |
totalAmount | int | 照片总数 |
results.userId | String | 账号 |
results.imageUrl | String | 回显照片的存储路径 |
results.timeStamp | long | 特征值变动时间戳(毫秒) |
results.deleted | boolean | 照片是否被删除。true=删除,false=新增或修改 |
results.clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则imageUrl字段为空 |
results.images | List<自定义对象> | 照片信息。无值时返回null |
results.images.type | String | 照片类型code |
results.images.feature | String | 照片特征值 |
results.images.updateTime | long | 照片特征值更新时间 |
results.images.totalSource | Double | 照片总分 |
results.images.clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则feature、totalSource |
注:照片类型code: 底库照片=100,生活照=201,职业照=202。
五、通过用户id和照片类型查询照片
1、返回照片路径
通过用户id和照片类型查询照片返回照片路径。
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/face/searchFaceByUserIdAndType
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"userId" : "testface",
"type":100
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
userId | String | 是 | 账号 |
type | int | 是 | 照片分类code,100:正面照, 201:生活照, 202:职业照, 300:学信网照片 |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"userId": "testface",
"path": "/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg",
"updatedTime": 1687155232327,
"clientIsAuthorization":true
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 账号 |
path | String | 照片在存储上的路径 |
updatedTime | Long | 更新日期时间戳 |
clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则path字段为空 |
注:照片类型code: 底库照片=100,生活照=201,职业照=202。
2、返回照片base64
通过用户id和照片类型查询照片返回照片的base64。
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://{server}/faceid/public/face/searchFaceByUserIdAndTypeImage
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"userId" : "testface",
"type":100
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
userId | String | 是 | 账号 |
type | String | 是 | 照片分类code |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"userId": "testface",
"path": "/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg",
"image": "/9j/4AAQ.....YbGf/Z",
"updatedTime": 1687155232327,
"clientIsAuthorization":true
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 账号 |
path | String | 照片在存储上的路径 |
image | String | 照片base64 |
updatedTime | Long | 更新日期时间戳 |
clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则path、image字段为空 |
注:照片类型code: 底库照片=100,生活照=201,职业照=202。
六、检查照片质量
检查照片质量。
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/face/quality
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"file" : {
"image":"/9j/4AAQ......EQBERAf/Z",
"ext":"jpg"
}
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
file.image | String | 是 | 照片base64 |
file.ext | String | 是 | 照片后缀 |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"qualityScores": "0.7168,0.5429,0.0000,0.0002,0.9148,0.5352,0.0008,0.9664,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-1.3611,4.4754,-2.4668,137.0000,327.0000,284.0000,284.0000,1.0000,0.9830,0.8736,0.0000,0.0000,0.0000,0.0000,4c0c864175cc13c0526e021f798fa3cf",
"scores": [
0.63,
0.51,
0.0
],
"scoresInfo": [
{
"position": 1,
"explain": "总分"
},
{
"position": 2,
"explain": "光照分"
},
{
"position": 3,
"explain": "口罩分"
}
],
"manufactureName": "云从",
"isQualified": true,
"unqualifiedReason": ""
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
qualityScores | String | 照片质量分 |
scores | List |
照片质量分合格标准 |
scoresInfo | List<自定义对象> | 表明每个位置的质量分含义 |
manufactureName | String | 厂商名称 |
isQualified | boolean | 照片是否符合标准 |
unqualifiedReason | String | 不符合标准的原因 |
注:qualityScores 字符串中的各类分数是根据 “,”(逗号)隔开的。计算总分是否合格的方法如下:
根据 scoresInfo获取总分的位置(position)为 1。然后在质量分(qualityScores)中获取第一位分数为 0.7168,在 合格标准中(scores) 获取总分标准为 0.63。因为 0.7168 > 0.63, 所以质量合格。
七、通过用户id list查询用户照片
通过用户id list查询用户照片。当用户(userIds) 长度超过10个时,取前10个用户的账号返回
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/face/findAllImageBase64ByUserIds
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"userIds": ["testface"],
"types": ["100"]
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
userIds | List |
是 | 账号 |
types | List |
是 | 照片分类code, 100:正面照, 201:生活照, 202:职业照, 300:学信网照片 |
返回结果:
{
"code": 200,
"message": "OK",
"data": [
{
"userId": "testface",
"imageUrl": "/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg",
"clientIsAuthorization":true,
"userFaceFileDtos": [
{
"type": "100",
"image": "/9j/4AAYXk...../2OEQdm5gYbGf/Z",
"fileName": "rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg",
"timeStamp": 0,
"clientIsAuthorization":true
}
]
}
]
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 账号 |
imageUrl | String | 回显照片的存储路径 |
clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则imageUrl字段为空 |
userFaceFileDtos.type | String | 照片类型 |
userFaceFileDtos.timeStamp | long | 照片变动时间戳(毫秒) |
userFaceFileDtos.image | String | 照片base64 |
userFaceFileDtos.clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则image、fileName字段为空 |
注:照片类型code: 底库照片=100,生活照=201,职业照=202。
八、上传照片(通过类型+用户id)
上传照片(通过类型+用户id)。
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://self.xxx.example.com/faceid/public/face/image
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"ext":"jpg",
"type":100,
"userId":"2009082",
"image":"/9j/4AAQS....Gf/Z"
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
userId | String | 是 | 账号 |
type | int | 是 | 照片分类code,100:正面照, 201:生活照, 202:职业照, 300:学信网照片 |
ext | String | 是 | 照片后缀 |
image | String | 是 | 照片base64编码 |
返回结果:
{
"code": 200,
"message": "OK",
"data": {
"userId": "2009082",
"path": "/group1/M00/00/18/rBEITl-iGcOAd-uEAAHfytyTzvE908.jpg"
}
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 账号 |
path | String | 上传照片的存储路径 |
注:照片类型code: 底库照片=100,生活照=201,职业照=202。
九、根据生物id获取用户信息(1.9 版本)
请求地址: http://self.xxx.example.com/faceid/public/face/getUserByBiologyId/{userBiologyId}
请求方式: GET
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
功能说明: 更新远程接口用户,具体根据业务定义标准接口
返回参数:
请求参数支持标准定义,可以根据实际需要自由选取和自定义参数名字。
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
xm | string | true | 姓名 |
idcard | string | true | 身份证件号 |
sfzjlxm | string | true | 身份证件类型,1 居民身份证 、15 港澳居民来往内地通行证、16 港澳居民居住证、17 台湾居民居住证、8 台湾居民来往内地通行证、A 护照 |
identityInfo | array | true | 身份信息 |
└─GH | string | true | 工号 |
└─SFLBDM | string | true | 身份类别代码 |
└─SFYXQQS | string | true | 身份有效期(起始) |
└─SFYXQJZ | string | true | 身份有效期(截至) |
└─GLRYZT | string | true | 管理人员状态 01 待报备、02 在职、03 延聘、04 待岗、05 长病假、06 因公出国、07 停薪留职、08 离职、09 辞职、10 开除、11 退休 、12 离休 |
└─FWRYZT | string | true | 服务人员状态 01 待报备、02 在职、03 延聘、04 待岗、05 长病假、06 因公出国、07 停薪留职、08 离职、09 辞职、10 开除、11 退休 、12 离休 |
└─FKZT | string | true | 访客状态 |
└─LSRYZT | string | true | 临时人员状态 |
└─SZDWGWMC | array | true | 所在单位 |
└──code | string | true | 编号 |
└──name | string | true | 名称 |
请求实例:
http://self.xxx.example.com/faceid/public/face/getUserByBiologyId/61397e1c3404670006021472
响应实例: http state code 200为正常
{
"code": 200,
"message": "OK",
"data": {
"xm":"汪淼",
"idcard":"4123559412341234",
"sfzjlxm":"1",
"identityInfo":[
{
"GH": "YG0001",
"SFLBDM": "02",
"LSRYZT": "04",
"SFYXQQS": 1633000343948,
"SFYXQJZ": 1633086745915,
"FWRYZT": null,
"GLRYZT": null,
"FKZT": null,
"SZDWGWMC": [
{
"code": "01",
"name": "管理部"
}
]
},
{
"GH":"0120212035",
"SFLBDM":"01",
"LSRYZT": null,
"SFYXQQS": 1633000343948,
"SFYXQJZ": 1633086745915,
"FWRYZT": null,
"GLRYZT": null,
"FKZT": null,
"SZDWGWMC": [
{
"code": "01",
"name": "管理部"
}
]
},
],
}
}
十、通过账号和照片类型查询单个用户照片特征值(1.9 版本)
照片类型code: 正面照片=100 请求地址: http://self.xxx.example.com/faceid/public/face/getFeatureByUserId
请求方式: POST
请求类型: application/json;charset=utf-8
认证参数: Authorization: Bearer {token}
注:https方式类似。
请求参数:
{
"userId" : "testface",
"type":100
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
userId | String | 是 | 账号 |
type | int | 是 | 照片分类code |
返回结果:
{
"code": 200,
"message": "OK",
"data": [
{
"userId": "testface",
"feature": "DwmPv5KhiL/w9P4+C4mSPzI8AL9sNls/nlGOv6aji7",
"userBiologyId":"6386c7a979edc100015fda9c",
"clientIsAuthorization":true
}
]
}
如果特征值数据为空则返回
{
"code": 204,
"message": "No Content",
"data": null
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回状态code |
message | String | 返回状态消息 |
data | 自定义对象 | 返回值的自定义对象 |
userId | String | 账号 |
feature | String | 照片特征值 |
userBiologyId | String | 用户生物id |
clientIsAuthorization | boolean | 客户端是否授权应用使用人脸照片,true为授权使用,false为拒绝使用,如果为false,则feature字段为空 |
接口调用失败请查看开发指南-Token与Api调用失败须知