Amazon web services 亚马逊产品搜索API:不工作

Amazon web services 亚马逊产品搜索API:不工作,amazon-web-services,amazon,amazon-product-api,Amazon Web Services,Amazon,Amazon Product Api,我正在使用Amazon web服务获取产品价格 它工作得很好,但在Amazon对API进行了更改(其中associateTag成为强制参数)之后,它开始给出一个错误。因此,我在请求中添加了一个相关标记,如下所示: tempQueryString =[NSString stringWithFormat:@"GET\necs.amazonaws.com\n/onca/xml\nAWSAccessKeyId=AKIAJ3A3LA5NYXWPSTGQ&IdType=ASIN&ItemId

我正在使用Amazon web服务获取产品价格

它工作得很好,但在Amazon对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];
现在它给出了这个错误:
“我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”

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

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]


提前感谢。

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

$parameters["AssociateTag"] = myInfo::MY_AMAZON_ASSOCIATE_ID;
然后我叫:

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

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

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

$parameters["AssociateTag"] = myInfo::MY_AMAZON_ASSOCIATE_ID;
然后我叫:

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

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

我今天也收到了同样的问题,现在他们需要协会标签,我已将其放入我不会带回任何结果。。。非常令人沮丧我今天也遇到了同样的问题,现在他们需要协会,我已经加入了协会,我不会带来任何结果。。。非常令人沮丧我添加了associateTag参数,但现在它给出了这个错误:“我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”听起来您应该尝试官方AWS支持论坛。您是否使用其他域注册了开发人员密钥?我不记得具体细节,但您的公钥和私钥都绑定到一个域,至少某些API是这样工作的。我添加了associateTag参数,但现在它给出了以下错误:“我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。“听起来您应该尝试官方AWS支持论坛。您是否使用其他域注册了开发人员密钥?我不记得具体细节,但您的公钥和私钥都绑定到一个域,至少某些API是这样工作的。