最近,我在PHP上使用了相同的代码,并且工作正常,但是当我尝试Node Js时,它对我不起作用。请检查一次:
PHP
$signature = $ACCID . "POST" . strtolower(urlencode($url)).$requestContentBase64String;
$hmacsignature = base64_encode(hash_hmac("sha256", $signature, base64_decode($APIKey), true));
节点代码:
var signature = ACCID+"POST"+encodeURI(url).toLowerCase()+requestContentBase64String;
var hmacsignature = base64.encode(crypto.createHmac('sha256', APIKey).update(signature).digest('base64'))
请检查此代码中的错误。
答案 0 :(得分:0)
您的第二行有两个错误:
BASE64_DECODE(APIKey)
,而在Node.js代码中仅为APIKey
BASE64(HEX(HMAC))
,而在Node.js代码中为BASE64(BASE64(HMAC))
尝试一下:
var hmacsignature = crypto.createHmac('sha256', Buffer.from(APIKey, 'base64')).update(signature).digest('base64')