Web Services 亚马逊产品广告API(带ItemPage的ItemSearch)

5vf7fwbs  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(156)

我写了下面的代码:

from hashlib import sha256
from base64 import b64encode
import hmac
import urllib
from time import strftime, gmtime

url = 'http://ecs.amazonaws.com/onca/xml'
AWSAccessKeyId = amazon_settings.amazon_access_key_id
AssociateTag = amazon_settings.amazon_associate_tag
Keywords = urllib.quote_plus('Potter')
Operation = 'ItemSearch'
SearchIndex = 'Books'
Service = 'AWSECommerceService'
Timestamp = urllib.quote_plus(strftime("%Y-%m-%dT%H:%M:%S.000Z", gmtime()))
Version = '2011-08-01'

sign_to = 'GET\necs.amazonaws.com\n/onca/xml\nAWSAccessKeyId=%s&AssociateTag=%s&Keywords=%s&Operation=%s&SearchIndex=%s&Service=%s&Timestamp=%s&Version=%s' % (AWSAccessKeyId, AssociateTag, Keywords, Operation, SearchIndex, Service, Timestamp, Version)

Signature = urllib.quote_plus(b64encode(hmac.new(str(amazon_settings.amazon_secret_access_key), str(sign_to), sha256).digest()))

request = '%s?AWSAccessKeyId=%s&AssociateTag=%s&Keywords=%s&Operation=%s&SearchIndex=%s&Service=%s&Timestamp=%s&Version=%s&Signature=%s' % (url, AWSAccessKeyId, AssociateTag, Keywords, Operation, SearchIndex, Service, Timestamp, Version, Signature)

print request

当我使用这段代码时,一切正常。但是如果我尝试将ItemPage参数添加到sign_to变量和请求变量,我会得到错误SignatureDoesNotMatch。
请帮帮我。

46scxncf

46scxncf1#

这实际上并不能回答你的问题,但是我建议你看看亚马逊产品广告API的优秀的python Package 器-python-amazon-product-api

hgtggwj0

hgtggwj02#

在文档中很难找到它,但是您必须确保操作列表是按字母顺序排列的,否则您会得到SignatureDoesNotMatch错误。
例如,ItemPage必须介于AssociateTagKeywords之间才有效。

AWSAccessKeyId
AssociateTag
ItemPage
Keywords
Operation
ResponseGroup
SearchIndex
Service
SignatureVersion
Timestamp
Version

相关问题