我想使用R将请求发送到Amazon Product API服务.
有没有办法使用R对Amazon Product API进行身份验证和查询,而不会收到以下错误:
"我们计算的请求签名与您提供的签名不匹配.请检查您的AWS秘密访问密钥和签名方法.有关详细信息,请参阅服务文档."
我正在连接到亚马逊产品广告API,为了签署我的请求,我需要对HMAC-SHA256哈希的原始二进制输出进行base64编码.
在hash_hmac的PHP文档中,第四个参数bool $raw_output控制输出是原始二进制数据(true)还是小写hexits(false).我的程序只需将该参数设置为true即可在PHP中运行.
但是,我现在正试图将其移植到Javascript.我尝试使用CryptoJS.HmacSHA256()函数,但它似乎返回小写的六角形.如何将其转换为二进制?
我根据CryptoJS文档尝试了以下内容,但两个输出都是相同的:
var hash = CryptoJS.HmacSHA256("hello", "key");
console.log(hash.toString());
console.log(hash.toString(CryptoJS.enc.Base64));
Run Code Online (Sandbox Code Playgroud) 我正在使用Product Advertising API在有效的ASIN上执行ItemLookup,请求所有三种优惠组,而且我没有收到任何价格信息.然而,当我在亚马逊上查看相同的产品时,它的库存和有效价格.我相信我需要描述问题的所有内容都是在响应我的ItemLookup请求时返回的ItemLookupResponse中,因为它回显所有参数:
<ItemLookupResponse>
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent"
Value="Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0" />
</HTTPHeaders>
<RequestId>09872c13-5297-4401-ad15-e631b05c7a8f</RequestId>
<Arguments>
<Argument Name="Condition" Value="All" />
<Argument Name="Operation" Value="ItemLookup" />
<Argument Name="Service" Value="AWSECommerceService" />
<Argument Name="Signature"
Value="<omitted>" />
<Argument Name="MerchantId" Value="All" />
<Argument Name="AssociateTag" Value="<omitted>" />
<Argument Name="Version" Value="2011-08-01" />
<Argument Name="ItemId" Value="B00828J7PG" />
<Argument Name="IdType" Value="ASIN" />
<Argument Name="AWSAccessKeyId" Value="<omitted>" />
<Argument Name="Timestamp" Value="2012-10-16T20:30:28.000Z" />
<Argument Name="ResponseGroup" Value="Offers,OfferFull,OfferSummary" />
</Arguments>
<RequestProcessingTime>0.0194200000000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemLookupRequest>
<Condition>All</Condition>
<IdType>ASIN</IdType>
<MerchantId>Deprecated</MerchantId>
<ItemId>B00828J7PG</ItemId>
<ResponseGroup>Offers</ResponseGroup>
<ResponseGroup>OfferFull</ResponseGroup> …Run Code Online (Sandbox Code Playgroud) 我收到此错误" ImportError: No module named lxml"即使LXML肯定安装.具体来说,它安装在项目的python Virtualenv中.最终我正在研究Python/Amazon Product API.尝试从终端(mac)运行该项目的一个示例脚本后,我收到错误.
我怎样才能解决这个问题?或进一步追查问题?
Google搜索引导我:
sudo xcodebuild -licensepip install --upgrade lxml目前版本为3.4.0pip install libxml2-dev libxslt-dev python-dev编辑:更多细节
抛出错误的代码行from lxml import etree, objectify,这是在远离我的虚拟环境中安装LXML的文件夹中(尽管我在终端中的virtualenv中运行脚本).如果问题只是脚本不知道在哪里找到LXML安装问题,我该如何解决?
我正在尝试在Elixir中编写Amazon Product Advertising API客户端.开发人员指南描述了签署API请求的过程,其中必须使用请求和"秘密访问密钥"创建HMAC-SHA26哈希.这是我写的用来处理签名请求的函数:
defp sign_request(url) do
url_parts = URI.parse(url)
request = "GET\n" <> url_parts.host <> "\n" <> url_parts.path <> "\n" <> url_parts.query
url <> "&Signature=" <> :crypto.hmac(:sha256, 'ThisIsMySecretAccessKey', request)
end
Run Code Online (Sandbox Code Playgroud)
传递给函数的url看起来像这样: http://webservice.amazon.com/onca/xml?AssociateTag=ThisIsMyAssociateTag&AWSAccessKeyId=ThisIsMyAWSAccessKeyId&Keywords=stuff&Operation=ItemSearch&SearchIndex=Apparel&Service=AWSECommerceService&Timestamp=2014-11-22T12%3A00%3A00Z&Validate=True&Version=2013-08-01
我遇到的问题是,虽然:crypto.hmac/3返回二进制文件,但该二进制文件不是字符串; 通过返回值String.valid?/1回报false.因此,我无法将返回值连接到url字符串的末尾以对请求进行签名.
我使用:crypto.hmac/3不正确吗?有什么我想念的吗?我还有另一种方法吗?
我开始开发一个简单的 Symfony 5 应用程序。它使用 Amazon Product Advertising API 5.0 和 paapi5-php-sdk 包(由 TheWirecutter 提供,因为 Amazon 从 Packagist 中提取了它,但这无关紧要)。
我有一个已有 5 年历史的关联帐户,并且我已经生成了新的访问+密钥。
由于我在意大利,所以我点击了webservices.amazon.it+eu-west-1。
我在过去 24 小时内运行了 10 个 API 调用,但服务始终响应:
TooManyRequests 错误消息:由于请求限制,请求被拒绝。请验证每秒向亚马逊商品广告 API 发出的请求数。
我知道评级限制,但我远未达到最低限制。
我究竟做错了什么?
截至8月15日,亚马逊强制要求签署对其产品广告API的所有请求.我以为我的一切工作都很好但是当第15个终于出现时,我的Web应用程序停止工作,几乎从那以后我一直试图找出如何签署SOAP请求.
亚马逊有一个过时的示例代码,用于签署在这里似乎不起作用的请求
基本上,我需要知道如何使用最新的C#SOAP API和.NET 3.5为我的请求添加签名.
我希望我已经提供了足够的细节,如果我没有请随时请我详细说明.
谢谢
The_Lorax
更新: 我正在使用MVC并且需要知道如何将Signature添加到ItemLookup或AWSECommerceService对象.是否有包含签名值的属性?它如何附加到请求?
在这个页面上,他们说我必须包含Signature和TimeStamp参数,但intellisense现在会显示任何这样的属性.
这个问题涉及联盟营销,但实际上是关于在超链接到其他站点之前拦截超链接的一般性问题,您可以将访问者活动记录到数据库.
我的联盟营销客户有一个非常好的问题.想象一下,在给定种子关键字的情况下,您可以通过其API从亚马逊撤回产品.现在假设访问者点击其中一个产品在亚马逊上查看它.该产品的URL可能如下所示(这只是一个演示):
http://www.amazon.com/dp/B0042RU3Y0/?tag=xxxxxxxxxxxxxxxx-20
但是猜猜那有什么不对?它没有传递种子关键字.因此,我们不知道哪个种子关键字最有效.相反,她希望我们能够通过以下内容然后以某种方式跟踪:
http://www.amazon.com/dp/B0042RU3Y0/?tag=xxxxxxxxxxxxxxxx-20&seed=laptops
我没有看到任何亚马逊文档,我们可以通过额外参数,然后跟踪他们通过过滤器的报告.
因此,我唯一能想到的是我们需要在点击亚马逊之前捕获点击.换句话说,在该事件冒泡并执行之前,在jQuery中我可以先拦截它,解析该超链接的href URL,添加这个额外的种子关键字信息,通过AJAX将其发送回PHP页面和数据库表,然后释放该click事件,以便执行它并且浏览器转到Amazon.
有谁知道这是如何在jQuery中完成的?我知道AJAX部分 - 只是没有抓取点击的点击拦截部分,然后释放它.
我正在浏览亚马逊产品广告API REST签名文档,我被困在#8
使用上面的字符串和我们的"虚拟"秘密访问密钥:1234567890,使用SHA256哈希算法计算符合RFC 2104的HMAC.有关此步骤的更多信息,请参阅编程语言的文档和代码示例.
没关系,在python中使用字符串+密钥计算SHA哈希的帮助,设法再试一次.将在下面发布答案.
我正在创建一个游戏比较网站,并希望将亚马逊价格纳入其中.我面临的问题是使用他们的API来获得我已经拥有的25,000种产品的价格.
我目前使用的ItemLookup从亚马逊API和有工作来获取价格,但是后约10结果我得到一个错误说"你太迅速提交请求.请以较慢的速度重试您的请求.
减慢请求率的最佳方法是什么?
谢谢,