gpt4 book ai didi

python - 亚马逊产品广告 API 签名

转载 作者:太空狗 更新时间:2023-10-30 01:01:10 25 4
gpt4 key购买 nike

我正在尝试为亚马逊产品广告 API 生成签名,已经进行了几个小时,但仍然收到 403 - 谁能快速查看代码并告诉我是否做错了什么?

这是我用来创建签名的函数

def create_signature(service, operation, version, search_index, keywords, associate_tag, time_stamp, access_key):
start_string = "GET\n" + \
"webservices.amazon.com\n" + \
"/onca/xml\n" + \
"AWSAccessKeyId=" + access_key + \
"&AssociateTag=" + associate_tag + \
"&Keywords=" + keywords + \
"&Operation=" + operation + \
"&SearchIndex=" + search_index + \
"&Service=" + service + \
"&Timestamp=" + time_stamp + \
"&Version=" + version

dig = hmac.new("MYSECRETID", msg=start_string, digestmod=hashlib.sha256).digest()
sig = urllib.quote_plus(base64.b64encode(dig).decode())

return sig;

这是我用来返回请求字符串的函数

def ProcessRequest(request_item):
start_string = "http://webservices.amazon.com/onca/xml?" + \
"AWSAccessKeyId=" + request_item.access_key + \
"&AssociateTag=" + request_item.associate_tag + \
"&Keywords=" + request_item.keywords + \
"&Operation=" + request_item.operation + \
"&SearchIndex=" + request_item.search_index + \
"&Service=" + request_item.service + \
"&Timestamp=" + request_item.time_stamp + \
"&Version=" + request_item.version + \
"&Signature=" + request_item.signature
return start_string;

这是运行代码

_AWSAccessKeyID = "MY KEY"
_AWSSecretKey= "MY SECRET KEY"

def ProduceTimeStamp():
time = datetime.datetime.now().isoformat()
return time;

item = Class_Request.setup_request("AWSECommerceService", "ItemSearch", "2011-08-01", "Books", "harry%20potter", "PutYourAssociateTagHere", ProduceTimeStamp(), _AWSAccessKeyID)
item2 = Class_Request.ProcessRequest(item)

它发出的在 403 处生成的示例 Web 请求是这样的:-

http://webservices.amazon.com/onca/xml?AWSAccessKeyId=AKIAIY4QS5QNDAI2NFLA&AssociateTag=PutYourAssociateTagHere&Keywords=harry%20potter&Operation=ItemSearch&SearchIndex=Books&Service=AWSECommerceService&Timestamp=2015-02-26T23:53:14.330000&Version=2011-08-01&Signature=KpC%2BUsyJcw563LzIgxf7GkYI5IV6EfmC0%2FsH8LuP%2FEk%3D

还有一个名为 ClassRequest 的 holder 类,每个请求字段都有一个字段

如果有人感兴趣,我遵循的说明在这里:- http://docs.aws.amazon.com/AWSECommerceService/latest/DG/rest-signature.html

我希望有人能提供帮助,我是 Python 的新手,有点迷茫

最佳答案

您可以简单地使用现有解决方案之一

可从 PyPI 获得.

将您的解决方案与其中之一进行比较: https://bitbucket.org/basti/python-amazon-product-api/src/41529579819c75ff4f03bc93ea4f35137716ebf2/amazonproduct/api.py?at=default#cl-143

例如,您的时间戳看起来有点短。

关于python - 亚马逊产品广告 API 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com