私はhash_hmacを使ってAPIに接続する必要があります。 hash_hmacのPHPドキュメントでは、4番目のパラメータbool $ raw_outputは、出力が生のバイナリデータ(true)か小文字のhexits(false)かを制御します。私のプログラムは、単にそのパラメータをtrueに設定するだけでPHPで動作します。 (?Iをすることができますか):RAW BINARY出力のPHPのhash_hmac()に相当するGoogle Appsスクリプトですか?
これは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
PHPには「真の」オプションがありませんので、生のバイナリデータは出力されません。
Google Appsと同じ値をPHPで取得するにはどうすればよいですか?
これは私がGoogle Appsに持っているものですが、明らかにそれが出力生のバイナリデータません:
var signature = Utilities.computeHmacSha256Signature(signature_string, private_key);
を私は六角への応答を変換する方法を見つけました(FALSEのPHPと同等の代わりに、 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;
},'');
はおそらく、PHPとGAppScriptの両方からのいくつかの例の出力は、私たちが問題を把握に役立つだろう投稿? – Sammitch
私はここで推測していますが、Utilities.computeHmacSha256Signature()によって生成されたバイト配列をUtilities.newBlob()に渡していますか? –
https://stackoverflow.com/questions/17160896/binary-output-from-google-script-hmacencription?rq=1を見ると、解決策ではないことがわかります... –