在JavaScript中生成Amazon API签名,导入哈希函数(jQuery)

在JavaScript中生成Amazon API签名,导入哈希函数(jQuery),javascript,jquery,amazon-web-services,Javascript,Jquery,Amazon Web Services,作为前言,我对JavaScript和web开发非常陌生。我为我所犯的任何愚蠢的错误或误解道歉 我正在为一个web门户制作一个小部件。小部件的设置使得每个小部件都是一个独立的JavaScript函数,因此我无法在小部件之外访问网页的HTML 我目前的目标是向Amazon发出API请求,这需要在每次请求时生成签名。我正在使用亚马逊提供的以下指南: 不幸的是,由于我无法访问网页的HTML,我正在使用jQuery函数$.getScript导入上述Amazon指南提供的函数: code.google.c

作为前言,我对JavaScript和web开发非常陌生。我为我所犯的任何愚蠢的错误或误解道歉

我正在为一个web门户制作一个小部件。小部件的设置使得每个小部件都是一个独立的JavaScript函数,因此我无法在小部件之外访问网页的HTML

我目前的目标是向Amazon发出API请求,这需要在每次请求时生成签名。我正在使用亚马逊提供的以下指南:

不幸的是,由于我无法访问网页的HTML,我正在使用jQuery函数$.getScript导入上述Amazon指南提供的函数:

code.google.com/p/crypto js/#HMAC

具体来说,这一点:

crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js

我的函数当前如下所示:

/**
 *Get signature key by hashing, scheme provided by Amazon
 */
getSignatureKey: function(key, dateStamp, regionName, serviceName) {
  $.getScript("widgets/textshop/hmac-sha256.js", function(){
    return signatureKeyHelper();
  });
  //Helper function for getSignatureKey since getScript is returned immediately; function not loaded in time
  function signatureKeyHelper(){
    console.log("A");  //Outputs!
    var kDate= Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, { asBytes: true})
    console.log("B");  //Error in previous line!
    var kRegion= Crypto.HMAC(Crypto.SHA256, regionName, kDate, { asBytes: true });
    var kService=Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, { asBytes: true });
    var kSigning= Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, { asBytes: true });

    return kSigning;
  }
},
控制台输出“A”,但给出错误“TypeError:Crypto.HMAC不是函数”。我非常不确定的部分是“加密”名称的使用——我完全不知道这个名称来自何处,是否应该改成其他名称,等等


谢谢你的时间

加密是一个通常会加载到页面上的库

该错误表示未定义该函数;我猜$.getScript没有按您的预期工作

注意:您永远不应该公开您的AWS密钥。您不能在客户端加密