在处理Amazon产品查找时遇到签名不匹配的问题,通常是由于以下几个原因造成的:
签名:在API请求中,签名用于验证请求的发送者身份以及确保数据在传输过程中未被篡改。Amazon使用HMAC-SHA256算法来生成签名。
import hmac
import hashlib
from datetime import datetime
from urllib.parse import urlencode
def sign_request(access_key, secret_key, params):
# 按字典顺序排序参数
sorted_params = sorted(params.items())
query_string = urlencode(sorted_params)
# 添加时间戳
timestamp = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
params['Timestamp'] = timestamp
# 构建待签名字符串
string_to_sign = f"GET\nwebservices.amazon.com\n/onca/xml\n{query_string}"
# 生成签名
signature = hmac.new(secret_key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest()
signature_encoded = urllib.parse.quote_plus(signature)
return signature_encoded
# 示例使用
params = {
'AWSAccessKeyId': 'YOUR_ACCESS_KEY',
'AssociateTag': 'YOUR_ASSOCIATE_TAG',
'Operation': 'ItemLookup',
'ItemId': 'B001E4KFG0',
'ResponseGroup': 'Small'
}
signature = sign_request('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY', params)
print(f"Generated Signature: {signature}")
通过以上步骤,通常可以解决签名不匹配的问题。如果问题仍然存在,建议检查Amazon的官方文档或联系技术支持获取进一步的帮助。
没有搜到相关的文章