- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前在尝试向 Amazon Marketplace WebService 提交请求时遇到以下错误:
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. 62baed22-cc14-49bd-bf34-c1eb10bc4019
代码:
import sys, os, base64, datetime, hashlib, hmac, urllib
from time import gmtime, strftime
from requests import request
import urllib.parse
import urllib.request
import dateutil.parser
def get_timestamp():
time = strftime("%Y-%m-%dT%H:%M:%SZ", gmtime())
return dateutil.parser.parse(time)
def calc_signature(method, domain, URI, request_description, key):
sig_data = method + '\n' + \
domain.lower() + '\n' + \
URI + '\n' + \
request_description
hmac_obj = hmac.new(key.encode(), sig_data.encode(), hashlib.sha256)
digest = hmac_obj.digest()
return urllib.parse.quote(base64.b64encode(digest), safe='-_+=/.~')
SECRET_KEY = 'XXXXXXXX'
AWS_ACCESS_KEY = 'XXXXXXXX'
SELLER_ID = 'XXXXXXXX'
MARKETPLACE_ID = 'XXXXXXXX'
MWS_AUTH_TOKEN = 'XXXXXXXXXXX'
Action = 'GetLowestPricedOffersForASIN'
SignatureMethod = 'HmacSHA256'
SignatureVersion = '2'
Timestamp = get_timestamp()
Version = '2011-10-01'
CreatedAfter = '2011-10-01T23:00:57Z'
URI = '/Products/2011-10-01'
domain = 'mws.amazonservices.com'
proto = 'https://'
method = 'POST'
ASIN = 'B004KZQVF4'
itemcondition = 'New'
payload = {
'AWSAccessKeyId': AWS_ACCESS_KEY,
'Action': Action,
'SellerId': SELLER_ID,
'MWSAuthToken': MWS_AUTH_TOKEN,
'SignatureVersion': SignatureVersion,
'Timestamp': '2016-01-08T05%3A32%3A48Z',
'Version': Version,
'SignatureMethod': SignatureMethod,
'CreatedAfter': CreatedAfter,
'MarketplaceId.Id.1': MARKETPLACE_ID,
'ASIN': ASIN,
'ItemCondition': itemcondition
}
request_description = '&'.join(['%s=%s' % (k, urllib.parse.quote(payload[k], safe='-_+=/.~').encode('utf-8')) for k in sorted(payload)])
sig = calc_signature(method, domain, URI, request_description, SECRET_KEY)
url = '%s%s?%s&Signature=%s' % \
(proto+domain, URI, request_description, urllib.parse.quote(sig))
headers = {
'Host': domain,
'Content-Type': 'text/xml',
'x-amazon-user-agent': 'python-requests/1.2.0 (Language=Python)'
}
response = request(method, url, headers=headers)
URL 输出:
https://mws.amazonservices.com/Products/2011-10-01?ASIN=XXXXXXX&AWSAccessKeyId=XXXXXXX&Action=GetLowestPricedOffersForASIN&CreatedAfter=2014-08-26T23%3A00%3A57Z&ItemCondition=New&MWSAuthToken=XXXXXXX&MarketplaceId.Id.1=XXXXXXX&SellerId=XXXXXXX&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-01-13T21%3A08%3A57Z&Version=2013-09-01&Signature=hwooJu0FeDs3j26mEUN8of5buSI/QsgY54kVCUsAirw%3D
显然签名的生成方式有问题,但我无法缩小确切原因的范围。
最佳答案
嗯,我想通了。只需将方法从“POST”更改为“GET”。
与此抗争了好几天——我想事情就是这么简单!
关于python - 亚马逊 MWS 错误 SignatureDoesNotMatch(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777296/
我知道 SO 上已经问了大约 8 个类似标题的问题,但没有一个对我的问题有帮助。 所以,我想在这里发布我的问题: 我一直收到这个众所周知的 SignatureDoesNotMatch 错误,看起来非常
我正在尝试将之前使用 $cordovaCapture 录制的视频上传到 Amazon s3。 捕获过程正常工作,作为响应,我得到了对象: [MediaFile] 0: MediaFilee
我已经查看了关于 SO 的其他问题,所有这些问题都没有将 SES 和 Java 作为问题的一部分。 异常(exception) Exception in thread "main" com.amazo
我有以下配置: Django/DRF 博托3 Django 存储 我正在使用带有一组 key 的 IAM 用户凭证。我已经从我的帐户中删除了所有其他 key 集,包括根 key ,以消除 key 不匹
我们正在尝试访问亚马逊 MWS Api,但我们就是无法让它工作,我们也不知道为什么。到目前为止,这是我们尝试过的: require_once('.config.inc.php');
我们正在尝试访问亚马逊 MWS Api,但我们就是无法让它工作,我们也不知道为什么。到目前为止,这是我们尝试过的: require_once('.config.inc.php');
尝试获取用于下载 Google 存储中的文件的签名网址是有问题的。出现 SignatureDoesNotMatch 错误。 private String signString(GoogleCrede
我正在尝试将图像添加到 aws 中的 s3 存储桶,但它似乎不起作用。我收到 SignatureDoesNotMatch 错误 这是我上传文件/图像的方式: 前端 const file = e.tar
运行以下代码时: import boto3 BUCKET = 'bwd-plfb' s3 = boto3.client('s3',use_ssl = False) resp = s3.list_obj
我正在为 Amazon S3 和 CloudFront 使用 PHP 类 - Link .但是,当我尝试将文件上传到存储桶时,出现此错误: [SignatureDoesNotMatch] The re
我想编写应用程序以通过 ISBN(用于慈善计划)获取书籍封面。所以我决定使用亚马逊产品 API。我得到了访问 key 和 secret key 。我得到了一个用于生成 key 的代码,我传递了 URL
我目前在尝试向 Amazon Marketplace WebService 提交请求时遇到以下错误: The request signature we calculated does not matc
我的代码已成功将文档上传到正确的存储桶中。我可以登录并查看 AWS S3 上的存储桶中的文档。当我尝试使用 boto3 中的generate_signed_url 方法来获取这些文档的 URL,然后将
我使用 Amazon Web Service S3 上传和存储我的文件。由于这个预签名的 url,我使用 AWS Sdk 为 Node.js 服务器端生成一个预签名的 url,以便直接从浏览器上传文件
感谢您的关注。 我正在尝试编写自己的轻量级 PHP 类来生成 AWS 身份验证 header 。据我所知,它运行正常。我已经使用此处 AWS 文档中提供的示例测试了它的输出:http://docs.a
我正在使用 AWS 签名版本 4 为 GET 请求预签名 URL。我让整个模块为 AWS 在其文档中提供的示例代码工作。当我尝试在我自己的 s3 存储桶上使用它时(在将所有示例值更改为我的真实值之后)
尝试使用 OpenSSL 通过 AWSCLI 安装多域 ssl 证书,它是 Comodo PositiveSSL 多域证书。 我遵循了 aws 教程和网络上的所有说明。我花了大约 2 个小时与 Com
我正在使用cordova文件传输使用签名url从aws s3下载文件,因为cordova文件传输对uri进行编码,签名中的“%”被转换为“%25”,因此,导致签名不匹配 最佳答案 尝试像这样设置您的选
我的 Firebase 存储 getSignedUrl()下载链接工作几天,然后停止工作。错误信息是 SignatureDoesNotMatch The request signature we ca
所以我的 iPhone 应用程序成功地将照片上传到 Amazon S3。我使用了与 S3Uploader 示例项目相同的代码以及最新(1.6.0 版)适用于 iOS 的 Amazon AWS 开发工具
我是一名优秀的程序员,十分优秀!