我正在尝试在Typescript中实现oauth的签名生成并让它工作,但后来我改变了一些小的东西(我在我的方法中硬编码了URI并将其更改为测试)并且没有真正支付注意,现在它已经因为某些原因而被打破,我不知道。我坐在这里两个小时盯着我的代码但是为了上帝的爱,我无法让它重新开始工作。
calculateSignatur(URI: string, nonce: string, timestamp: number): string{
let rawURL: string = "GET&" + encodeURIComponent(URI) + "&";
let parameterString: string = "exact=false" +
"&oauth_consumer_key=" + this.appToken +
"&oauth_nonce=" + nonce +
"&oauth_signature_method=" + this.oauth_signature_method +
"&oauth_timestamp=" + 1511003512399 +
"&oauth_token=" + this.accessToken +
"&oauth_version=" + this.oauth_version +
"&search=Black";
let signingString = rawURL + encodeURIComponent(parameterString);
let signingKey = encodeURIComponent(this.accessToken) + "&" + encodeURIComponent(this.accessTokenSecret);
let signatur: string = CryptoJS.HmacSHA1(signingString, signingKey).toString(CryptoJS.enc.Base64);
console.log("Signatur: " + signatur)
return signatur;
}
我现在硬编码参数以及时间戳和nonce来检查签名与邮递员生成的签名。如果我将邮递员生成的签名复制并粘贴到OAuth标头中并获得授权。所以错误必须在签名部分。
答案 0 :(得分:1)
当然,发布后5分钟我看到了我的错误。 sginingkey需要
let signingKey = encodeURIComponent(this.appSecret) + "&" + encodeURIComponent(this.accessTokenSecret);
而不是
let signingKey = encodeURIComponent(this.accessToken) + "&" + encodeURIComponent(this.accessTokenSecret);