0
アクセスキーと秘密鍵とassociate_tagが正しい答え私はリクエストを送信するときにトラブル を持って、私はこの応答を取得:アマゾンのAPIがMissingClientTokenId
object(SimpleXMLElement)#26 (2) { ["Error"]=> object(SimpleXMLElement)#27 (2) { ["Code"]=> string(20) "MissingClientTokenId" ["Message"]=> string(57) "Request must contain AWSAccessKeyId or X.509 certificate." } ["RequestId"]=> string(36) "3dda37ed-5b92-4b83-a95e-c19db6b4288c" }
はどこに問題があるとどのように私はそれを解決できますか?
$keywords='Learning PHP, MySQL';
$associate_tag = "xxxxxxxxxxxxxxxxxx";
$aws_secret_access_key = "xxxxxxxxxxxxxxx";
$aws_access_key_id = "xxxxxxxxxxxx";
$item_page=10;
$base_url = 'http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId;=' . '$aws_access_key_id' . '&';
//Set parameters for API search, see AWS documentation for a detailed list of parameters
$url_params = array(
'Operation'=>'ItemSearch',
'ItemPage'=>$item_page,
'AssociateTag'=>$associate_tag,
'Version'=>'2013-08-01',
'ResponseGroup'=>'Images,ItemAttributes,EditorialReview',
'SearchIndex'=>'Books',
'Keywords'=>rawurlencode($keywords)
);
//Sort the URL parameters
$url_parts = array();
foreach(array_keys($url_params) as $key)
$url_parts[] = $key."=".$url_params[$key];
sort($url_parts);
//Build and encode the request URL
$url = $base_url . implode('&',$url_parts);
$host = parse_url($base_url . implode('&',$url_parts),PHP_URL_HOST);
$timestamp = gmstrftime('%Y-%m-%dT%H:%M:%S.000Z');
$url = $url. '&Timestamp;=' . $timestamp;
$paramstart = strpos($url,'?');
$workurl = substr($url,$paramstart+1);
$workurl = str_replace(",",",",$workurl);
$workurl = str_replace(":",":",$workurl);
$params = explode("&",$workurl);
sort($params);
$signstr = "GET\n" . $host . "\n/onca/xml\n" . implode("&",$params);
$signstr = base64_encode(hash_hmac('sha256', $signstr, $aws_secret_access_key, true));
$signstr = urlencode($signstr);
$signedurl = $url . "&Signature;=" . $signstr;
$request = $signedurl;
//Send request to AWS
$session = curl_init($request);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
$parsed_xml = simplexml_load_string($response);
var_dump($parsed_xml);exit;
は今、このエラーを取得し、パラメータ署名 –
SimpleXMLElementオブジェクトを含んでいなければならない要求([エラー] =>のSimpleXMLElementオブジェクト([コード] => MissingParameter [メッセージ] = >リクエストにパラメータSignatureが含まれている必要があります)。[RequestId] => a497f313-a621-4098-97e4-965665d0f316) –
スペースまたは余分な ";" "$ request"変数に格納します。リクエストURLが正しく送信されていません。 –