//将data换成文档中给的例子,能生成正确的Signature
//但是用我自己id和key还有参数生辰的签名就报错
//===========↓ 附上代码↓ ===========
//从data读取secretKey
let secretKey = this.data.SecretKey;
//参数
let requestData = {
Action: "SentenceRecognition",
Version: "2019-06-14",
ProjectId: 0,
SubServiceType: 2,
EngSerViceType: "16k_zh",
SourceType: 1,
VoiceFormat: "mp3",
UsrAudioKey: new Date().getTime(),
Data: this.data.base64File,
DataLen: this.data.base64Length,
FilterDirty: 1,
FilterModal: 1,
FilterPunc: 1,
Timestamp: parseInt(new Date().getTime() / 1000),
Nonce: parseInt(new Date().getTime() / 1000),
SecretId: this.data.SecretId,
}
//自己定义了ksort排序
let data = ksort(requestData);
let arr = [];
for (var x in data) {
data[x] = encodeURIComponent(data[x]);
arr.push(x + '=' + data[x]);
}
let str = arr.join('&');
//签名生成
let sign = 'POSTasr.tencentcloudapi.com /?' + str;
//后面有b64_hmac_sha1()
sign = encodeURIComponent(b64_hmac_sha1(secretKey, sign));
data['Signature'] = sign;
后面用wx.request()请求就显示签名错误了
Error:{Code:"AuthFailure.SignatureFailure",Message:"The provided credentials could not be validated. Please check your signature is correct."}
相似问题