最近我在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'))
请检查此代码中的错误。
你的第二行有两个错误:
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')