:::info
在调用无界API前,必须获取签名,签名是用户的访问令牌,包含了用户的身份、权限等信息,每个API的请求头都需要加上该签名信息。鉴权主要分为以下两步:
1.获取appid
、publicSecretKey
和privateSecretKey
。
2.获取签名。
:::
当您成功完成企业认证后,可进入[企业控制后台](https://www.wujieai.net/enterprise-service/operation)。平台将提供`appid`、`公钥 (publicSecretKey)`和`私钥 (privateSecretKey)`,为了您的财产和服务安全请您妥善保管。
![image.png](https://api.apifox.com/api/v1/projects/3291650/resources/460968/image-preview)
**可参考下方签名代码demo**。
**签名失效时间为5分钟。**
![image.png](https://cdn.wujiebantu.com/openapi/sign.png)
- 1.创建签名
创建签名原文`{"appId":"appId","timestamp":当前时间戳}` (字段按字母顺序排序),使用私钥进行`SHA256withRSA`签名,再进行`Base64`处理。
- 2.将签名加到请求头
请将签名添加到HTTP请求中的`Authorization`标头中,字段值格式为
`{"secretKeyVersion":"1","appId":"你的appid","sign":"签名sign", "original": "签名原文"}`
- 3.发起API请求
API鉴权成功,Http状态码会返回200
:::highlight purple
Demo见此链接
go-sdk
https://gate.wujieai.net/wj-open/v1
:::
点击查看测试公私钥
```
{
"appId": "wja0q53lmql4cm2yd1",
"publicSecretKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrmkXAGJJg8Sjm3QuWDRpZbDAnZzTSxO9cxJr0nKgHTQgW394GsrXeQbTfb/mHWWKl0qvFpMoX0URxj2fzu80P+CNTCiu8DU3slZmq8DHwpEsSGuXKKiU1evHalmsiOvab0C2AasHyqojG7w2P1q76QPLkkT0jH4ibbcq+xIv61QIDAQAB",
"privateSecretKey": "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKuaRcAYkmDxKObdC5YNGllsMCdnNNLE71zEmvScqAdNCBbf3gaytd5BtN9v+YdZYqXSq8WkyhfRRHGPZ/O7zQ/4I1MKK7wNTeyVmarwMfCkSxIa5coqJTV68dqWayI69pvQLYBqwfKqiMbvDY/WrvpA8uSRPSMfiJttyr7Ei/rVAgMBAAECgYA+R2IzInfVmRCYIPc4gQ7kD2C2nD1OlUyt5Wi7iDNvWuSpsJva4Hci78PeJ7xvA+DKf9f5hiIWXMuzTzGSAsGcBvY0rgghpBKfX58pL3Ete/cny4UGpBwuVWAgQo+HG4XywIti9KfWJaX8gzEdT/q81N5tOWJeVGdfECs+JDNRwQJBANJG7xdU+9XMZWmxXlm4W2WTDVGPMqPPqfy3oWiAa0Q9K5su0pIEeGEcobxF9CMWpuej5Ontxo2uM7T9h3ShFXECQQDQ6oa19wLnF5UIIAsTwNtgL2UIksQ+cEwSK/+cabkCGbCLHpuXjOUuOQIWVj73PZAAyknugF53bBbaXk9UozmlAkAFsSHbsdM3UFcWa1SwfQsMTtS3dnbadE6XpqjZ2VAOAtHhW30bsr9Hcaz3GbWoFX7jGk6h/mu3fhWsOoimIY4hAkAkWMk7G1CL+BRbp4eF1kXUhCplxXMTEeKKPtFn2xTvAp0udxLG2SJ+Wji8viCST0mgeZFHR1ooGMwZDdNrfEJpAkEApG6GgYbzqYSbxon2n2QuUif8j6XyOKpveQbLhjcCCy3BOGV1+JSYZ+iuueGBbHXnBxlfCXC8RJdhwpJjQRoV8Q=="
}
```
:::highlight purple
Http状态码
| 状态码 | 描述 |
| --- | --- |
| 400 | 参数不合法 |
| 401 | 权限不足 |
| 403 | 签名鉴权不通过 |
| 405 | 请求方式错误 |
| 429 | 请求API限流 |
| 415 | 传参的资源类型错误,需正确设置content-type:application/json |
:::
:::highlight purple
业务响应报文
业务返回值http状态码都是200,业务异常在body下面的code上标识
```
{
"code": "200",
"data": {
//数据
},
"message": "success",
"success": true
}
```
```
{
"code": "101001",
"data": null,
"message": "token无效",
"success": false
}
```
常出现于key加密不正确或与uid(token)不匹配
```
{
"code": "20010001",
"data": null,
"message": "非法参数",
"success": false
}
```
:::
:::highlight purple
回调机制
部分异步任务接口,在提交请求时,若填写**notify_url**字段,则在任务完成时,会将结果信息送往此地址。
具体回调内容,见各接口文档。
### 回调重试规则
1. 支持5级重试时间: 5, 10, 30, 60, 120 (单位:秒),也就是分别会在5s、10s、30s...时进行回调重试
2. 当回调通知方返回`success`时,我们会认为您已经成功处理回调,并终止重试。
### 回调验签
1. 从 Headers 的 `Authorization` 字段中获取签名原文original和签名后的字符串sign
2. 使用公钥验签,方法同上
`MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJxv9d5dRpaW7sB16Rx6OtIw7AaWj4JUslPYM4JVEfZDWni1MjjU7LGnToYmUkgxlP2SACCVxLyHVm40kM1DGUcCAwEAAQ==`
** 注:回调场景必须使用该公钥验签!**
:::
## 异常码
|异常码|描述|
| ---- | ---- |
20110001|画面描述含有敏感词
20110002|底图链接信息有误或不支持
20110003|参考图含有敏感信息
20110009|作品状态改变,请刷新后查看
20110010|积分余额不足
20110011|该作品不在排队中,无法撤销
20010018|由锁竞争导致的作画失败(需要重新发起)
20010015|暂时无法支持的尺寸/分辨率
20110017|检测资源
20110018|图片识别异常
20110019|未检测到人脸或人脸太小
20110020|检测到多张人脸
20110021|检测到侧脸
20110024|无可用模版
20110025|图片打标失败
20110026|排队时间超出上限