接入向导
按步骤完成注册 → 开通 → 签名 → 调试 → 上线。
接入共 4 步
其它都交给小影API —— 统一响应 {code, msg, data}。
-
1
注册账号
用户名 / 邮箱 / 手机号任意方式注册(邮箱、手机号可配开启)。
-
2
开通接入项目
联系管理员开通接入项目,开通后拿到专属 APPID 与 APPSECRET(项目由管理员在后台创建)。
-
3
读文档 + 在线调试
在接口文档填上你的密钥,页面会替你完成签名并真实转发,先验证再写代码。
-
4
接入生产
在上线前于服务端实现 HMAC-SHA256 签名,密钥放进环境变量,绝不进前端。
账号与凭证
① 注册/登录
先注册小影API 账号(入口在首页右上角)。
② 开通接入项目
接入项目由管理员在后台创建;开通后会拿到一次性展示 的 APPID 与 APPSECRET,请立即妥善保存。
③ 密钥使用须知
APPID 是公开标识;APPSECRET 是签名密钥,只应保存在你的服务端。泄露请立即联系管理员重置。
- APPID
- 形如
app_xxx,用于标识是哪个项目在调用,参与签名。 - APPSECRET
- 形如
sk_xxx,只用于服务端计算签名,严禁下发前端。
签名机制(HMAC-SHA256)
需要签名(auth)的接口,每次请求都要带上公共参数:
app_id / timestamp / nonce / sign。
- 取除 sign 外的全部参数(含 app_id/timestamp/nonce 与业务参数),过滤空值;
- 按键名 ASCII 升序排序;
- 拼接为
key=value&key=value…; - 与「方法(大写) + 换行 + 请求路径 + 换行」拼成待签串(路径含结尾斜杠、不含查询串);
- 以 APPSECRET 为密钥对该整串做 HMAC-SHA256,输出小写 hex 即 sign。
timestamp 为秒级时间戳,有效窗口 ±5 分钟;nonce 每次请求唯一(服务端去重防重放);路径必须与最终 URL 完全一致(含结尾斜杠)。
Python 签名示例
import hashlib
import hmac
import time
import secrets
APP_ID = 'app_yourAppId'
APP_SECRET = 'sk_yourAppSecret'
def build_sign(params: dict, secret: str, method: str, path: str) -> str:
"""方法(大写)+换行+路径+换行 拼接参数,HMAC-SHA256 输出小写 hex"""
items = sorted(
(k, str(v)) for k, v in params.items()
if k != 'sign' and v not in (None, '')
)
raw = method.upper() + '\n' + path + '\n' + '&'.join(f'{k}={v}' for k, v in items)
return hmac.new(secret.encode(), raw.encode(), hashlib.sha256).hexdigest()
def signed_params(biz: dict, method: str, path: str):
params = dict(biz)
params.update({
'app_id': APP_ID,
'timestamp': str(int(time.time())),
'nonce': secrets.token_hex(8),
})
params['sign'] = build_sign(params, APP_SECRET, method, path)
return params
用法示例:signed_params({'keyword': '周杰伦'}, 'POST', '/api/music/xiaoying/search/')。
提示:在线调试页会自动用你填写的密钥代签,初学无需手工算签名;上生产前请务必实现与服务端一致的口径。
在线调试
- 打开 接口文档中心,左侧选择目标服务;
- 页面右侧「鉴权设置」填入你的 APPID / APPSECRET(仅保存在本机浏览器,用于本次代签);
- 填好参数点「发送请求」,页面服务端代调真实 /api/ 接口并返回结果;
- 开放接口(徽标「开放·免签名」)无需密钥即可调试。
注意:短信、图形验证、AI 等会真实调用外部或产生费用/短信,调试前先确认。
常见问题
调用接口需要付费吗?
注册、登录与浏览文档均免费;接入项目开通后即可调用全部对外开放的接口,不按次计费、没有额度门槛(开放接口本就免签名)。
为什么返回 code=20011?
签名相关失败:缺少 app_id/timestamp/nonce/sign、timestamp 超出 ±5 分钟、app_id 未注册/停用、sign 不匹配或 nonce 重放。请逐项核对公共参数与签名算法。
在线调试会保存我的密钥吗?
不会上传服务器。密钥只保存在你的浏览器 localStorage,仅在发起调试请求时用于服务端本次代签。
怎么看接口要不要签名?
文档服务/线路旁有徽标:「开放·免签名」直接可调;「需签名」必须携带项目签名;个别公开 GET(如用户中心 methods、图形验证 config)也免签名。
常见返回码?
10000=成功;20001/20002/20003=参数缺失/格式错误/值非法;20011=签名或认证失败;20040=触发频率限制(如登录连续失败被临时锁定);40001=外部服务调用失败(请稍后重试或核对被调用的第三方资源)。
APPSECRET 泄露了怎么办?
请立即联系管理员重置密钥,旧密钥会立即失效;重置后所有已接入的调用需改用新密钥。
第 1 / 5 步