前提条件
开发要求
- 调用接口需要使用appId、accessKey和accessSecret密钥对进行接口认证签名
- appId、accessKey和accessSecret 需要由运营人员提供
认证信息
接口请求认证需要使用appId、accessKey和accessSecret对请求进行签名认证,设置请求头参数信息
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
appId | 是 | String | 应用标识,32位,由运营人员提供 |
accessKey | 是 | String | 用户标识,32位,由运营人员提供 |
timestamp | 是 | String | 13位时间戳 |
signature | 是 | String | 认证签名,根据签名算法进行计算 |
签名算法
将appId、accessKey、accessSecret和timestamp按照以下顺序组合后,使用accessSecret作为密钥通过HmacSHA256加密输出作为signature值。
Java参考代码:
String appId = "e28af480a60f3234c0e9bb5a1d7c3780";
String accessKey = "c08578f98d9798c928053525de3d8650";
String accessSecret = "C475D7136B46ADFDC57B6BAF9A3BCCBB";
String timestamp = String.valueOf(System.currentTimeMillis());
String origin = appId+ "\n" + accessKey + "\n" + accessSecret + "\n" + timestampStr;
String signature = genSignature(accessSecret, origin);
public String genSignature(String secretKey, String data) {
try {
SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
return Base64.getEncoder().encodeToString(mac.doFinal(data.getBytes("UTF-8")));
} catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
JavaScript参考代码:
var appId = "e28af480a60f3234c0e9bb5a1d7c3780";
var accessKey = "c08578f98d9798c928053525de3d8650";
var accessSecret = "C475D7136B46ADFDC57B6BAF9A3BCCBB";
var timestamp = Date.now(); // 当前时间戳
var origin = appId + "\n" + accessKey + "\n" + accessSecret + "\n" + timestamp;
var hash = CryptoJS.HmacSHA256(origin,accessSecret);
var signature = CryptoJS.enc.Base64.stringify(hash);
最后修改时间: 3 个月前