官方地址
生成签名
计算规范化请求字符串的HMAC-SHA1值,并和规范化请求字符串拼接后进行base64编码,公式如下:
raw = "a={}&b={}&c={}&d={}".format(api_key, expire_time, current_time, random)
sign_tmp = hmac.new(api_secret, raw, hashlib.sha1).digest()
sign = base64.b64encode(sign_tmp + raw)
Face++生成签名,提供了Python、Java、PHP版本,贴一个Nodejs版本
const crypto = require('crypto')
const base64 = {
decode: s => Buffer.from(s, 'binary'),
encode: b => Buffer.from(b, 'binary').toString('base64')
};
function createSign(apiKey, secretKey, expired) {
const now = Math.floor(Date.now() / 1000);
const rmd = Math.random().toString().slice(2, 12);
const raw = `a=${apiKey}&b=${now + expired}&c=${now}&d=${rmd}`;
const sign_tmp = crypto
.createHmac("sha1", secretKey)
.update(raw)
.digest('binary');
return base64.encode(sign_tmp + raw);
}
- 加密后转二进制,encode也需要设置二进制,也是我一开始没明白的地方