- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想编写应用程序以通过 ISBN(用于慈善计划)获取书籍封面。所以我决定使用亚马逊产品 API。我得到了访问 key 和 secret key 。我得到了一个用于生成 key 的代码,我传递了 URL,但它返回的是那样
<?xml version="1.0"?>
<ItemLookupErrorResponse xmlns="http://ecs.amazonaws.com/doc/2005-10-05/">
<Error><Code>SignatureDoesNotMatch</Code><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></Error><RequestID>6c60b8b7-8b78-4f21-bb7c-3d5d3a26dc48</RequestID>
</ItemLookupErrorResponse>
这是代码
<?php
$AWSAccessKeyId = "*******ACCESS KEY***************";
$signature = base64_encode(hash_hmac('sha256',$string_to_sign,"******SECRET KEY*******",true));
// encode any plus (+), equal (=), or other reserved characters in $signature
$signature = str_replace('%7E','~',rawurlencode($signature));
$url = "http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=".$AWSAccessKeyId."&IdType=ASIN&ItemId=1933988355&Operation=ItemLookup&ResponseGroup=Medium%2COffers&Service=AWSECommerceService&Timestamp=".gmdate('Y-m-d\TH:i:s\Z')."&Signature=".$signature;
echo $url;
?>
这段代码有什么问题?
我尝试使用相同的时间戳。仍然没有运气。这是示例代码。
$method = "GET";
$host = "ecs.amazonaws.".$region;
$uri = "/onca/xml";
// additional parameters
$params["Service"] = "AWSECommerceService";
$params["AWSAccessKeyId"] = $public_key;
// GMT timestamp
$params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");
// API version
$params["Version"] = "2009-03-31";
// sort the parameters
ksort($params);
// create the canonicalized query
$canonicalized_query = array();
foreach ($params as $param=>$value)
{
$param = str_replace("%7E", "~", rawurlencode($param));
$value = str_replace("%7E", "~", rawurlencode($value));
$canonicalized_query[] = $param."=".$value;
}
$canonicalized_query = implode("&", $canonicalized_query);
// create the string to sign
$string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query;
// calculate HMAC with SHA256 and base64-encoding
$signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, True));
// encode the signature for the request
$signature = str_replace("%7E", "~", rawurlencode($signature));
最佳答案
从时间戳创建一个变量以在 $string_to_sign 和 url 参数中使用它,否则可能会发生两个时间戳不同的情况。要提供更多帮助,您需要显示 $string_to_sign 的创建。
此外:Timestamp 参数也需要进行 urlencoded。
关于php - 亚马逊产品 API 返回 "SignatureDoesNotMatch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235264/
我知道 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 开发工具
我是一名优秀的程序员,十分优秀!