- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在尝试访问亚马逊 MWS Api,但我们就是无法让它工作,我们也不知道为什么。到目前为止,这是我们尝试过的:
require_once('.config.inc.php');
$base_url = "https://mws.amazonservices.de/Products/2011-10-01";
$method = "POST";
$host = "mws.amazonservices.de";
$uri = "/Products/2011-10-01";
$params = array(
'AWSAccessKeyId' => <our Key>,
'Action' => "GetLowestOfferListingsForASIN",
'SellerId' => <our ID>,
'SignatureMethod' => "HmacSHA256",
'SignatureVersion' => "2",
'Timestamp'=> gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time()), //tried this with time()+7200 since our server is 2 hours back but we also accessed mws to get the time used there
'Version'=> "2011-10-01",
'MarketplaceId' => <our MpID>,
'ItemCondition' => 'new',
'ASINList.ASIN.1' => B00NN8LSXY );
// Sort the URL parameters
$url_parts = array();
foreach(array_keys($params) as $key)
$url_parts[] = $key . "=" . str_replace('%7E', '~', rawurlencode($params[$key]));
sort($url_parts);
// Construct the string to sign
$url_string = implode("&", $url_parts);
$string_to_sign = "POST\nmws.amazonservices.de\n/Products/2011-10-01\n" . $url_string;
// Sign the request
$signature = hash_hmac("sha256", $string_to_sign, AWS_SECRET_ACCESS_KEY, TRUE);
// Base64 encode the signature and make it URL safe
$signature = urlencode(base64_encode($signature));
$url = "https://mws.amazonservices.de/Products/2011-10-01" . '?' . $url_string . '&Signature=' . $signature;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$response = curl_exec($ch);
//$parsed_xml = simplexml_load_string($response);
echo $response;
//return ($parsed_xml);
在我们添加的.config.inc.php 文件中所有 key 和 ID +
define('APPLICATION_NAME', '<our Firm>');
define('APPLICATION_VERSION', '1.0');
在我们做所有这些之前,我们检查了 MWS-Scratchpad 中的所有内容,但一切似乎都在那里工作(在 mws.amazon.de 上)。
但我们仍然得到 SignatureDoesNotMatch 错误代码
<Message>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.</Message>
或此错误代码:
<Message>Request signature is for too far in the future. Timestamp date: 2015-05-23T04:54:38.000Z. Currently, 10 percent of requests that are more than 15 minutes in the future will be rejected.</Message>
希望有人可以帮助我们阅读所有其他帖子和开发人员指南 - 似乎没有任何帮助
最佳答案
我遇到了同样的问题(以及其他)。
Amazon 提供的 PHP 引用和示例中包含了答案。整件事是千层面代码的一个典型例子,读起来像是对各地编码人员的侮辱。
API 需要包含所有请求数据的 HTTP POST 和使用您的 key 制作的签名。数组的排序和 url 编码标准将字符串更改为符号。
Amazon 希望它像这样排序:
uksort($params, 'strcmp');
忘记整个 $url_parts 部分,它很乱。像这样使用 http_build_query() :
$url_string = http_build_query($params,'','&',PHP_QUERY_RFC3986);
Amazon 需要 RFC3986,因此空格被编码为“+”,而不是“%20”。时间戳也应该是这样的:
'Timestamp' => gmdate("Y-m-d\TH:i:s\\Z", time()),
祝你好运。
关于php - 亚马逊 MWS 错误 SignatureDoesNotMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30392457/
我知道 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 开发工具
我是一名优秀的程序员,十分优秀!