2014-12-01 126 views
2

我指的是Alexa Top Sites Developer Guide并使用their sample codes, both PHP and Ruby。我收到以下错误SignatureDoesNotMatchAlexa Top Sites Service的AWS SignatureDoesNotMatch`响应

<?xml version="1.0"?> 
<Response><Errors><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></Errors><RequestID>28c6b028-c4b6-66a2-f5d8-70d8dc21b8f8</RequestID> 
</Response> 

我尝试了两种不同的快捷键使用相同的用户,并签署了Alexa网络信息服务,但没有运气。我在Mac OS 10.9和10.10上都尝试了这些脚本,我的时间设置被设置为自动更新。

在PHP代码,这是生成签名的一部分:我不知道我做错了

/** 
* Generates a signature per RFC 2104 
* 
* @param String $queryParams query parameters to use in creating signature 
* @return String    signature 
*/ 
protected function generateSignature($queryParams) { 
    $sign = "GET\n" . strtolower(self::$ServiceHost) . "\n/\n". $queryParams; 
    echo "String to sign: \n" . $sign . "\n\n"; 
    $sig = base64_encode(hash_hmac('sha256', $sign, $this->secretAccessKey, true)); 
    return rawurlencode($sig); 
} 

+1

切换到标签[标签:加密],没有MAC标签,签名是*方法*签名。 – 2014-12-02 08:17:13

回答

4

我想通了。根AWS用户可以创建请求,但不能创建IAM用户。我猜root用户可以访问Alexa服务,但不能访问IAM用户。

+0

感谢您回报,您应该能够在一段时间后接受您自己的答案... – 2014-12-02 08:15:47

+0

如果您可以使用非root用户,您是否每个人都知道? – Aine 2015-04-21 12:58:05

+0

截至目前,它仍然看起来像你需要使用根密钥。我也无法让IAM工作。嘘! – killthrush 2017-06-10 18:40:13

相关问题