Мне нужно подключиться к API, используя hash_hmac. В документации PHP для hash_hmac четвертый параметр bool $raw_output определяет, являются ли выходные данные необработанными двоичными данными (true) или шестнадцатеричными символами в нижнем регистре (false). Моя программа работает на PHP, просто установив для этого параметра значение true.
Вот что работает в PHP:
$signature = base64_encode(hash_hmac('SHA256', $signature_string, $private_key, true))
В Google Apps я не могу использовать какие-либо библиотеки javascript (или могу?), но есть эта функция: Utilities.computeHmacSha256Signature https://developers.google.com/apps-script/reference/utilities/utilities#computehmacsha256signaturevalue-key
Однако у него нет опции «true», которая есть у PHP, поэтому он не выводит необработанные двоичные данные.
Как я могу получить то же значение с помощью Google Apps, что и в PHP?
Это то, что у меня есть в Google Apps, но, очевидно, оно не выводит необработанные двоичные данные:
var signature = Utilities.computeHmacSha256Signature(signature_string, private_key);
Я нашел способ преобразовать ответ в шестнадцатеричный (PHP-эквивалент FALSE вместо TRUE, но это не приблизило меня к решению.
// convert to hex
var signature_in_hex = signature.reduce(function(str,chr) {
chr = (chr < 0 ? chr + 256 : chr).toString(16);
return str + (chr.length==1?'0':'') + chr;
},'');
Utilities.computeHmacSha256Signature()
, вUtilities.newBlob()
делает то, что вам нужно? - person Dean Ransevycz   schedule 08.09.2017