【问题标题】:Amazon product search API: Not Working亚马逊产品搜索 API:不工作
【发布时间】:2012-02-21 08:10:26
【问题描述】:

我正在使用亚马逊网络服务来获取产品价格。

它工作正常,但是在亚马逊对 API 中的 associateTag 成为强制参数进行更改后,它开始出现错误。所以我在请求中放置了一个关联的标签:

tempQueryString =[NSString stringWithFormat:@"GET\necs.amazonaws.com\n/onca/xml\nAWSAccessKeyId=AKIAJ3A3LA5NYXWPSTGQ&IdType=ASIN&ItemId=B003VKR0J0&MerchantId=Amazon&AssociateTag=babyformu-20&Operation=ItemLookup&ResponseGroup=Large&Service=AWSECommerceService&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=%@T%@%@%@Z&Version=2010-01-01",str2,hour,mint,s];

现在出现此错误:
"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."

我没有对签名方法进行任何更改。 这里是:

NSString *key = @"9at/FN4mouFxnIV2SsoQTR4iO6x6AWVt2xFvEwmv"; // private key
    NSLog(@"current:    %@ ",queryString);
    NSString *data = queryString;
    const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
    const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
    unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
    CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
    NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
                                          length:sizeof(cHMAC)];
    hash = [HMAC base64Encoding];
    NSLog(@"hash value11 == %@",hash);
    encodedString = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)hash, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);

我正在使用这个 api 来获取产品详细信息:

query=[NSString stringWithFormat:@"http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=AKIAJ3A3LA5NYXWPSTGQ&IdType=ASIN&ItemId=B003VKR0J0&AssociateTag=babyformu-20&MerchantId=Amazon&Operation=ItemLookup&ResponseGroup=Large&Service=AWSECommerceService&Timestamp=%@T%@:%@:%@Z&Version=2009-03-31&Signature=%@",str2,h,m,s,encodedString];

提前致谢。

【问题讨论】:

  • 我今天也遇到了同样的问题,现在他们需要 associateTag,我已经输入了我没有带回任何结果......非常令人沮丧

标签: amazon-web-services amazon amazon-product-api


【解决方案1】:

我能够相对轻松地修复我的亚马逊代码。我正在使用 PHP。我刚刚添加了另一个参数:

$parameters["AssociateTag"] = myInfo::MY_AMAZON_ASSOCIATE_ID;

然后我打电话:

aws_signed_request("com", $parameters, $this->public_key, $this->private_key)

AWS 签名请求由 Ulrich Mierendorff 创建并由 Sameer Borate 修改。

【讨论】:

  • 我添加了 associateTag 参数,但现在出现此错误:“我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS 秘密访问密钥和签名方法。请参阅服务文档以获取详细信息。”
  • 听起来您应该尝试官方 AWS 支持论坛。您是否使用其他域注册了开发者密钥?我不记得具体细节,但您的公钥和私钥与域相关联,至少某些 API 是这样工作的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 2013-07-06
相关资源
最近更新 更多