Bonjour,
j'ai un petit problème de connexion au web service d'amazon afin de pouvoir faire une rechercher de livre.
J'ai une erreur, MISSING SIGNATURE, quelqu'un saurait-il comme créer une signature ou à quoi cela correspond?
Merci
Bonjour,
j'ai un petit problème de connexion au web service d'amazon afin de pouvoir faire une rechercher de livre.
J'ai une erreur, MISSING SIGNATURE, quelqu'un saurait-il comme créer une signature ou à quoi cela correspond?
Merci
T'as posé la question à Google avant de venir chercher de l'aide ???
On trouve plein d'infos en moins de 2 minutes :
http://richardcummings.info/the-requ...ervices-error/
Oui j'ai demandé à Google et ça fait presque une semaine que je cherche, et rien car ton lien bah la solution ce n'est pas en utilisant SOAP
c'est quel service plus précisément ? a quelle fonction y'a l'erreur ?
Voici mon code
Je créé bien ma signature comme dit par amazon, la concaténation de la commande et de timestamp et ma clé secret.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $Time = gmstrftime("%Y-%m-%dT%H:%M:%S.000Z"); $Signature = base64_encode(hash_hmac("sha256", "ItemSearch".$Time, $secret, true)); $client = new SoapClient('http://ecs.amazonaws.com/AWSECommerceService/2010-10-01/FR/AWSECommerceService.wsdl'); $params = array('AWSAccessKeyId' => 'AKIAITNKX5BOPDWLHQFQ', 'Timestamp' => $Time, 'Signature' => $Signature, 'Request' => array('SearchIndex' => 'Books', 'Keywords' => 'HARRY')); $res = $client->ItemSearch($params);
Mais j'ai toujours le message,The HMAC-SHA256 signature calculated from the concatenation of the Action and Timestamp parameters, using your AWS Secret Access Key as the key (for information about authentication with HMAC signatures, see HMAC-SHA Signatures for REST Requests). For example, for a request to create a queue, the value of the Signature element would be the HMAC-SHA256 digest of a string like this: ItemLookup2010-10-16T00:00:00Z
Fatal error: Uncaught SoapFault exception: [aws:Client.MissingParameter] The request must contain the parameter Signature. in /home/amazon.php:40
Stack trace:
#0 [internal function]: SoapClient->__call('ItemSearch', Array)
#1 /home/amazon.php(40): SoapClient->ItemSearch(Array)
#2 {main}
thrown in /home/amazon.php on line 40
Bonjour,
Je viens de tomber sur ton sujet car j'ai le même souci que toi
En revanche je pense que tu t'es planté sur un point :
The HMAC-SHA256 signature calculated from the concatenation of the Action and Timestamp parameters,Ceci récupère pas le timestamp ? il se récupère plutôt comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $Time = gmstrftime("%Y-%m-%dT%H:%M:%S.000Z");
Si je trouve pour ton souci je te tiens au courant
Code : Sélectionner tout - Visualiser dans une fenêtre à part $timestamp = time();
edit : autant pour moi pour le format du timestamp mais tu avais bien raison :
Par contre tu rajoutes les centièmes de seconde ? pourquoi ?string like this: ItemLookup2010-10-16T00:00:00Z
La creation de la signature avec timestamp comme dit par par amazon.
le timestamp d'amazon : 2010-10-16T00:00:00Z
Ton timestamp : %Y-%m-%dT%H:%M:%S.000Z
Il y a une différence.
Bonjour à tous, je viens de trouver une solution à ce problème qui marche pour moi. L'astuce c'est de placer les champsdans le header du paquet SOAP...
Code : Sélectionner tout - Visualiser dans une fenêtre à part AWSAccessKeyId,Timestamp,Signature
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php $Time = gmstrftime("%Y-%m-%dT%H:%M:%S.000Z"); $Signature = base64_encode(hash_hmac("sha256", "ItemSearch".$Time, 'Mon SECRETID', true)); $client = new SoapClient('http://ecs.amazonaws.com/AWSECommerceService/2010-11-01/FR/AWSECommerceService.wsdl', array('trace' => 1)); // Construction du header $header_arr = array(); $header_arr[] = new SoapHeader( 'http://security.amazonaws.com/doc/2007-01-01/', 'AWSAccessKeyId', "MA CLE AWS" ); $header_arr[] = new SoapHeader( 'http://security.amazonaws.com/doc/2007-01-01/', 'Timestamp', $Time ); $header_arr[] = new SoapHeader( 'http://security.amazonaws.com/doc/2007-01-01/', 'Signature', $Signature ); $client->__setSoapHeaders($header_arr); $params = array( 'AWSAccessKeyId' => 'MA CLE AWS', 'Request' => array( 'SearchIndex' => 'Books', 'Keywords' => 'Harry%20Potter' ) ); $res = $client->ItemSearch($params); ?>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager