我正在尝试做什么:
我正在尝试列出Devpay S3存储桶。
我正在使用的参考文献:
1. http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTServiceGET.html
2. http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/QuickReferenceS3Products.html
3. http://docs.amazonwebservices.com/AmazonDevPay/2007-12-01/DevPayDeveloperGuide/DesktopAWSCalls.html
我是怎么做的:
使用PHP libcURL库的简单REST GET请求:
GET / HTTP/1.1
Host: s3.amazonaws.com
Date: $date
X-Amz-Date: $date
X-Amz-Security-Token: $userToken, $productToken
Authorization: $signatureValue
,其中
$date // = timestamp at the time of request
$signatureValue //= Authorization: AWS $signature
$signature //= $userAccessKey:$signatureString
$signatureString //=base64 encoded HMAC-SHA1 of $stringToSign with $userSecretKey
$stringToSign //= utf8 encoded string:
这个字符串 -
GET\n
""\n
""\n
$date\n
$canonicalized_AMZ_Headers\n
/
我正在使用curl_exec()
来执行GET请求。
我收到的错误:
“SignatureDoesNotMatch”
“我们计算的请求签名与您提供的签名不符。请检查您的密钥和签名方法”
谢谢!
任何帮助将不胜感激
答案 0 :(得分:1)
在S3返回的错误消息中将是一个StringToSign元素(使用View Source可以更清楚地看到它)。仔细比较您要附加的字符串以签署请求 - 它们必须完全相同。