IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Web Service Amazon SOAP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Web Service Amazon SOAP
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut
    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/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    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

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est quel service plus précisément ? a quelle fonction y'a l'erreur ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Voici mon code
    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);
    Je créé bien ma signature comme dit par amazon, la concaténation de la commande et de timestamp et ma clé secret.
    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
    Mais j'ai toujours le message,

    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

  6. #6
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    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,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Time = gmstrftime("%Y-%m-%dT%H:%M:%S.000Z");
    Ceci récupère pas le timestamp ? il se récupère plutôt comme ceci :
    Si je trouve pour ton souci je te tiens au courant

    edit : autant pour moi pour le format du timestamp mais tu avais bien raison :

    string like this: ItemLookup2010-10-16T00:00:00Z
    Par contre tu rajoutes les centièmes de seconde ? pourquoi ?
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    La creation de la signature avec timestamp comme dit par par amazon.

  8. #8
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    le timestamp d'amazon : 2010-10-16T00:00:00Z
    Ton timestamp : %Y-%m-%dT%H:%M:%S.000Z

    Il y a une différence.
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Ma solution
    Bonjour à tous, je viens de trouver une solution à ce problème qui marche pour moi. L'astuce c'est de placer les champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AWSAccessKeyId,Timestamp,Signature
    dans le header du paquet SOAP...

    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);
    ?>

Discussions similaires

  1. [Web Service] web service amazon
    Par adnen07 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 13/05/2012, 14h27
  2. API java pour amazon web services(amazon E-commerce Service)
    Par mehdiing dans le forum Services Web
    Réponses: 1
    Dernier message: 03/04/2008, 08h34
  3. [C#] Web service Amazon : en francais ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/03/2007, 14h35
  4. Web Service Adressing SOAP Asynchone
    Par miryame dans le forum Services Web
    Réponses: 2
    Dernier message: 23/11/2006, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo