接入嚮導
按步驟完成註冊 → 開通 → 簽名 → 調試 → 上線。
接入共 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 步