Ответ "SignatureDoesNotMatch` от AWS сервиса лучших сайтов Alexa


Я имею в виду Руководство для разработчиков лучших сайтов Alexa и использую их примеры кодов, как PHP, так и Ruby. Я получаю следующую ошибку 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);
}

Я не уверен, что я делаю неправильно.

Author: Maarten Bodewes, 2014-12-02

1 answers

Я это понял. Корневой пользователь AWS может сделать запрос, но не созданный мной пользователь IAM. Я предполагаю, что пользователь root имеет доступ к сервису Alexa, но не пользователь IAM.

 5
Author: cmertayak, 2014-12-01 22:53:11