@faceunity/webapi v0.0.1
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 | ![]() |
6 years ago