@faceunity/webapi
v0.0.1
Published
## 简介
Downloads
1
Readme
Nama Web API
简介
Web API的使用分为三个流程:
- 联系我司获取key和secret
- 通过key和secret获取access_token
- 通过access_token访问API
获取access_token
获取access_token时,需要用到key和secret,本文档中假设
Key = '12345' //必须携带
Secrect = '54321'
假设获取access_token的请求链接为:https://token.faceunity.com/api/v1/GetAccessToken?Key=12345 。获取access_token的具体流程如下:
1. 将本次请求参数按照名称进行升序排列
排序前:
{
"Key":"12345"
}
排序后:
{
"params":"test"
}
**2. 构造被签名参数串 **
被签名串的构造规则为:被签名串 = 所有请求参数拼接(无需HTTP转义),并在本签名串的结尾拼接secret。
本例中排序后参数见上,故参数拼接后为Key12345paramstest
,然后加上账户中的secret,即本例中的54321
,最终被签名串为Key12345paramstest54321
。
**3. 计算签名 **
计算被签名串的sha1值生成Signature。
Nodejs代码
const { createHash } = require("crypto");
function signature(params,secrect) {
let keys = Object.keys(params).sort(); //按参数排序
let sign_str: string = '';
keys.forEach((value, index) => { //构造被签名串
sign_str += value + params[value];
});
sign_str += secrect; //连接secrect
return createHash('sha1').update(sign_str).digest('hex'); //返回被签名串的sha1值
}
Python代码
import hashlib
import urlparse
import urllib
def _verfy_ac(private_key, params):
items=params.items()
# 请求参数串
items.sort()
# 将参数串排序
params_data = "";
for key, value in items:
params_data = params_data + str(key) + str(value)
params_data = params_data + private_key
sign = hashlib.sha1()
sign.update(params_data)
signature = sign.hexdigest()
return signature
# 生成的Signature值
签名计算命令行工具:Windows版 Linux版 Macos版
Exmaple:faceunity-cli signature --key 111 --secrect 222
4. 拼接出请求链接
将计算出的Signature拼接到尾部(各参数需要url编码,例如Key为lbA2MypNve2PeZpaOiPUGnSt+FHePw==,编码后为lbA2MypNve2PeZpaOiPUGnSt%2BFHePw%3D%3D)例如https://token.faceunity.com/api/v1/GetAccessToken?params=test&Key=12345&Signature=cac49742c5e52e63b285b6a549c7d362b19aa054
5. 发送请求,获取access_token
请求成功后会返回如下结构
{
"code":2,
"message":"success",
"data":{
"access_token":"82f205d0-8a31-11e8-8c11-b74c5a2e235c",
"expirein":600
}
}
data.access_token:申请到的access_token。
data.expirein:token的过期时间,单位为秒。
访问API
!> 请求API时需在url地址中带上access_token参数,如https://api.faceunity.com/api/beauty?access_token=82f205d0-8a31-11e8-8c11-b74c5a2e235c
。
!> 需要上传文件的接口都使用form-data方式上传
!> 上传清晰的人脸照片效果更好
API
/api/beauty
描述:美颜接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | params | String | 否 | 美颜参数,序列化后的json字符串,例如{"skin_detect":1,"heavy_blur":1,"blur_level":0.7,"color_level":0.3,"red_level":1},,序列化后的json字符串,例如{"skin_detect":1,"heavy_blur":1,"blur_level":0.7,"color_level":0.3,"red_level":1},详情 | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer|Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/sticker
描述:贴纸接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | :--------: | :----: | :--: | :--------------------------------------: | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/cosmetics
描述:人脸美妆
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | params | String | 是 | 序列化的JSON字符(人脸美妆素材) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
params:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | tex_brow | String | 否 | 眉毛 (眉毛素材) | | tex_eye | String | 否 | 眼妆 (眼妆素材) | | tex_pupil | String | 否 | 美瞳 (美瞳素材) | | tex_blusher | String | 否 | 腮红 (腮红素材) | | makeup_lip_color | String | 否 | 嘴唇,长度为4的RGBA数组,如[229.5,53.55,124.95,0.7] |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/poster
描述:人脸融合
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 是 | 图片数据 | | templete | FormData | 是 | 渲染的海报图片, 以下图片经测试效果较好(海报列表) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/facewarp
描述:哈哈镜接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/armesh
描述:AR Mesh
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具([默认道具](#AR Mesh)) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/animoji
描述:animoji
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | type | String | 是 | 同步或异步(Sync/Async) | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/changeface
描述:换脸接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
/api/background
描述:背景分割接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 否 | 图片数据 | | item | String | 是 | 选择渲染的道具(默认道具) | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer或Object | 是 | type为Sync时为渲染后返回的图片数据,type为Async时为{TaskId:xxxx} |
视频处理接口
/api/video/upload
描述:视频上传接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ----------- | -------- | -------- | -------------------------------------------------------- | | video | FormData | 是 | 视频数据 | | item/bundle | String | 是 | 默认道具/自定义道具ID | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ----------- | -------- | --------------------------------------------- | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer | 是 | 渲染后返回的图片数据 |
/api/video/download
描述:视频下载接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | TaskId | String | 是 | type为异步时返回的TaskId | | type | String | 是 | video | | encoding | String | 否 | 返回图片数据编码方式,当前仅支持base64(默认返回为Buffer) |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | arrayBuffer | 是 | 渲染后返回的图片数据 |
/api/facedetection
描述:表情识别接口
请求方式:POST
参数:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ---------- | ------ | ---- | ---------------------------------------- | | image | FormData | 是 | 图片数据 |
返回值:
| 参数名 | 数据类型 | 是否必须 | 说明 | | ------- | ------ | ---- | ------------------------ | | type | String | 是 | 同步或异步(Sync/Async) | | code | Number | 是 | 请求结果,0为请求失败,1为请求不合法,2为成功 | | message | String | 否 | 返回信息 | | data | Json | 是 | 上传图片的表情系数 |
道具列表:
贴纸
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
baimao_lm_fu | | baozi_lm_fu |
caituzi_zh_fu | | call_lm_fu |
caomei_lm_fu | | chibang_lm_fu |
chmaomi_ztt_fu| | dmmao_zh_fu |
fantuan_lm_fu | | fenghongmao_ztt_fu |
fengya_ztt_fu | | fenhongshu_ztt_fu |
fense_lm_fu | | ffmao_zh_fu |
ffxiong_zh_fu | | freestyle_ztt_fu |
glassesP_ztt_fu| | glassesY_ztt_fu|
haijun_lm_fu | | haijunmao_lm_fu|
Hatshenshi_ztt_fu| | hboluo_zh_fu |
honghuzi_ztt_fu| |huangguang_ztt_fu|
huangyu_lm_fu | | hudie_lm_fu |
huzi_lm_fu | | juanhuzi_lm_fu |
lhudie_zh_fu | | ljiao_zh_fu |
nuqwa_zh_fu | | shucha_zh_fu |
touhua_ztt_fu | | wjdok_zh_fu |
xiaoermao_ztt_fu| | xinglu_ztt_fu |
xlong_zh_fu | |yingtaomao_ztt_fu|
CatSparks | | ChalkCat2 |
ChalkRabbi | | Crown |
DaisyPig | | demon |
item0201 | | item0203 |
item0205 | | item0209 |
item0211 | | item0502 |
item0503 | | seye |
tears | | wcat |
etmaozi_zh_fu | | ettuzi_zh_fu |
etxigua_zh_fu | | etye_zh_fu |
huanxing_ztt_fu| | miaomi_ztt_fu|
qingwa_lm_fu | |taiyanghua_ztt_fu|
xiaoji_ztt_fu | | PrincessCrown|
tiara | | YellowEar |
fu_zh_zbaixin | | fu_zh_zbtang |
fu_ztt_lihua | | fu_ztt_meigui |
niulang_ztt_fu | | qiyuan_ztt_fu |
qxhua_zh_fu | | qxniu_zh_fu |
qxzhinv_zh_fu | |sanjiantao_lm_fu |
zhinv_ztt_fu | | BigEarFox |
CatGray | | ChalkCat |
evil | | EyeBall |
fox | | GourdBro |
huanlady1 | | huanlady2 |
huanlady3 | | huanlady4 |
huanlady5 | | item0202 |
item0206 | | item0207 |
item0504 | | item0505 |
item0506 | | krabbit |
pig | | PinkCat |
pirate | | pirate2 |
rabbit | | rabbit1 |
redribbt | | VectorCat |
aixingou | | aixinniao |
dhj | | dylm |
hana | | long |
mogu | | sanye |
touhua | | BeagleDog |
ColorCrown | | Deer |
HappyRabbi | | hartshorn |
item0204 | | item0208 |
item0210 | | item0501 |
mask_hat | | |
Animoji
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
baimao_Animoji | | douniuquan_Animoji|
huangya_Animoji | | frog_Animoji|
hetun_Animoji | | kuloutou_Animoji|
hashiqi_Animoji | | |
AR Mesh
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
bluebird | | fenhudie|
huanghudie | | lanhudie|
tiger_bai | | tiger_huang|
zihudie | | baozi |
tiger | | xiongmao |
哈哈镜
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
facewarp1 | | facewarp2 |
facewarp3 | | facewarp4 |
facewarp5 | | facewarp6 |
换脸
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
mask_guocaijie | | mask_huangxiaoming|
mask_linzhiling | | mask_liudehua |
mask_luhan | | mask_matianyu |
mask_tongliya | | mask_zhangbozhi |
背景分割
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
hez_ztt_fu | | sea_lm_fu |
gufeng_zh_fu | | ice_lm_fu |
xiandai_ztt_fu | | |
素材列表
人脸融合
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
1 | | 2 |
3 | | 4 |
5 | | 6 |
7 | | 8 |
9 | | 10|
人脸美妆
眉毛
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
brow-1 | | brow-2 |
brow-3 | | |
眼妆
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
eye-1 | | eye-2 |
eye-3 | | |
美瞳
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
eyepupil-1 | | eyepupil-2 |
eyepupil-3 | | |
腮红
item | 图示 | item | 图示
--------------- |-------------------------------- |--------------- |--------------------------------
zhuangrong_sh-1 | | zhuangrong_sh-2 |
zhuangrong_sh-3 | | |