Izračunavanje Oath 1.0a potpisa u Typescript/Javascriptu
Pokušavam implementirati generiranje potpisa za OAuth u Typescriptu i imao sam ga kako radi, ali onda sam promijenio nešto sitno (fiksirao sam URI u svojoj metodi i promijenio ga za test) i nisam baš obraćao pažnju i sada je iz nekog razloga pokvareno, ne znam zašto. Sjedim ovdje već dva sata gledajući svoj kod, ali za ljubav Boga, ne mogu ga opet natjerati da radi.
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;
}
Privremeno sam također hardcodirao parametar, kao i vremensku oznaku i nonce kako bih provjerio potpis u odnosu na potpis koji je generirao Postman. Ako kopiram i zalijepim potpis koji je generirao Postman u OAuth zaglavlje i dobijem autorizaciju, dakle, greška mora biti u dijelu potpisa.
Odgovor #1
Naravno, 5 minuta nakon objave vidio sam svoju pogrešku. Potpisni ključ treba biti
let signingKey = encodeURIComponent(this.appSecret) + "&" + encodeURIComponent(this.accessTokenSecret);
i ne
let signingKey = encodeURIComponent(this.accessToken) + "&" + encodeURIComponent(this.accessTokenSecret);
