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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Authentification avec l'API suivie de la poste (okapi)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut Authentification avec l'API suivie de la poste (okapi)
    Bonjour, quelqu'un pourrais t'il me dire le problème avec ce code ?

    j'obtiens une erreur http 401 j'ai essayé plein de choses je bloque.

    le code :

    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
    $postdata = http_build_query(
        array(
            'id' => 'numéro de suivie',
            'lang' => 'fr_FR'
        )
    );
     
    $opts = array('http' =>
        array(
            'method' => 'GET',
            'header' => 'Content-type: application/json;\r\nAccept: application/json\r\ncharset=utf-8\r\nX-Okapi-Key:clef d authentification' ,
            'content' => $postdata
        )
    );
     
    $context = stream_context_create($opts);
     
     
    $result = file_get_contents('https://api.laposte.fr/suivi/v2/idships/numéro de suivie?lang=fr_FR',false,$context);
     
    echo $result;
    docu : https://developer.laposte.fr/product...tion#heading-2


    merci de votre aide

  2. #2
    Membre habitué Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Points : 168
    Points
    168
    Par défaut
    401 c'est "unauthorized", la clé est peut être pas bonne.

    EDIT : je confirme :

    Codes retour

    401 : Non-autorisé (absence de la clé Okapi)

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    c'est pourtant la clef qui m'a été attribué, j'ai vérifié mille fois, de plus elle n'est pas absente regardez le code du coté du header.

  4. #4
    Membre habitué Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Points : 168
    Points
    168
    Par défaut
    J'intègre cette API demain, je te donnerais peut être plus de solutions

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    Merci ce serait sympa , tu compte le faire avec la fonction curl() ou comme moi avec filegetcontent() ?

  6. #6
    Membre habitué Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Points : 168
    Points
    168
    Par défaut
    Je vais tenter par cURL comme la doc l'indique.

  7. #7
    Membre habitué Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Points : 168
    Points
    168
    Par défaut
    Voilà mon code fonctionnel utilisant cURL.

    Il faut savoir que leur API sandbox n'est pas au point, par exemple le paramètre "lang" ne fonctionne pas (en production aussi ? à voir), et que certains codes ne fonctionnent pas, du moins celui-ci : LU680211095FR auquel il manque la dernière accolade à leur JSON, du coup impossible de json_decode() le résultat.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    //l'API vous permet de faire 100 calls / sec
     
    //pour afficher les dates en rapport avec votre fuseau
    date_default_timezone_set("Europe/Paris");
     
     
    //paramètres URL
     
    // $numero_suivi : string (Requis) Exemple: EP111111110FR (Identifiant de l'objet recherché de 11 à 15 caractères alphanumériques)
    //ne pas tester le code de test suivant : LU680211095FR leur json est buggué ! (message vue dans le tchat d'aide Laposte : "L'API suivi V2 utilisant les numéros de suivis de la SandBox, connait un dysfonctionnement. Ce service est indisponible pour le moment (numéros de suivis de la SandBox) et n'impacte pas le numéro de production.")
    $numero_suivi = 'LZ712917377US';
     
    //$lang : string (Optionnel et semble être buggué car ne fonctionne pas)
    //default : frFR, enum : ["frFR", "deDE", "enGB", "esES", "itIT", "nl_NL"]
    //doc confuse : parfois frFR est mentionné, parfois fr_FR
    $lang = 'fr_FR';
     
    $ch = curl_init('https://api.laposte.fr/suivi/v2/idships/'. $numero_suivi . ($lang == '' ? '' : '?lang='. $lang));
     
    //header
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
    	'Accept: application/json',
    	//'X-Forwarded-For: 123.123.123.123', optionnel
    	'X-Okapi-Key: votre clé sandbox ou de production'
    ]);
     
    //on met le résultat dans une variable pour ne pas l'afficher ici
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
    //on ne vérifi pas le SSL
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     
    //on vérifi si l'éxecution est OK
    $data = curl_exec($ch);
    if($data === false){
    	echo "Erreur cURL : ". curl_error($ch);
    }else{
     
    	//affichage des données de suivi
    	$donnees = json_decode($data, true);
    	//pour tester avec le code LU680211095FR (rajout de l'accolade manquante)
    	//$donnees = json_decode($data.'}', true);
     
    	//si ya une erreur avec le code ou autre
    	if($donnees['returnCode'] !== 200){
     
    		echo "Erreur : ". $donnees['returnMessage'];
     
    	}else{
     
    		//aucune erreur, on affiche le suivi
     
    		var_dump($donnees);
     
    	}
     
    	//debug
    	echo "<pre>". $data ."</pre>";
    }
     
    // Fermeture de la session cURL
    curl_close($ch);

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    du travail de pro tu gère tout les cas , sur ce forum qqu présente une solution avec filegetcontent sans le parametre lang kustement mais j'ai testé ça ne marche pas non plus

    https://gitter.im/DeveloperLaPoste/okapi

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Bonjour,
    utilises-tu une bonne clé d'authentification (la sandbox)? sachant que cette dernière par défaut a une durée de vie d'environ 1h qu'il faut régénérer.
    Il est possible de tester cette API depuis ton compte dev via l'interface graphique swagger de laposte ( products/suivi/2/swagger ).
    Tout comme tu peux installer l’outil postman sur ton ordinateur pour essayer l'API.

    Le code qui a été posté précédemment devrait logiquement fonctionner.

    Quant à ton code initialement posté, il y a une option en trop( charset=utf-8 ) quoique l'erreur rencontrée n'est pas imputable à cette option.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $cle_authentification ="clef d'authentification";
     $opts = array('http' =>
                array(
                    'method' => 'GET',
                    'header' => "Content-type: application/json;\r\nAccept: application/json\r\nX-Okapi-Key:$cle_authentification" ,
                    'content' => $postdata
                )
            );

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    J'ai tout testé clef prod , clef sandbox, j'ai régénéré les clefs j'ai tout essayé avec le header et rien ne marche j'utilise ce code pour d'autre api service de géolocalisation, paiment en ligne etc ou bien les services que je créer moi même okapi c'est le seul qui marche pas , la poste quoi ...

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par serpentcorail Voir le message
    J'ai tout testé clef prod , clef sandbox, j'ai régénéré les clefs j'ai tout essayé avec le header et rien ne marche j'utilise ce code pour d'autre api service de géolocalisation, paiment en ligne etc ou bien les services que je créer moi même okapi c'est le seul qui marche pas , la poste quoi ...
    L'interface graphique Swagger de La poste de suivi courrier/colis fonctionne bien. Je viens de la tester.

    Si ta clé authentification sandbox ne fonctionne toujours pas tu peux contacter le support technique dont l'adresse se trouve sur ton espace privé de dev.

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    Le mail est envoyé depuis hier mais d'apres les avis faut attendre 2 mois tant pis je passerais par la fonction curl

  13. #13
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 321
    Points : 642
    Points
    642
    Par défaut
    Bonjour,

    Dans ton premier code, les retours à la ligne \r\n ne sont surement pas pris en compte dans l'entête header car tu utilises des guillemets simple. Utilises plutôt des double quotes comme dans le code proposé par armel18 (la coloration syntaxique montre bien la différence).

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    J'ai déjà fait c'est la même chose et si je en met pas un espace après le \r\n j'obtient alors une erreur serveur de type 503 service indisponible,

    voici mon header dernière version :

    'header' => "Accept:application/json\r\n X-Okapi-Key:maclefprod"

    j'ai retiré le paramètre lang optionnel mais j'ai toujours HTTP request failed! HTTP/1.1 401 Unauthorized

  15. #15
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Je me suis créé un compte exprès pour tester et je confirme que le code de @two3d fonctionne parfaitement bien
    Y'a juste à mettre la clé Okapi, j'ai même pas regarde le code et hop ! tout fonctionne

    J'ai l'impression que vous vous bornez à utiliser file_get_contents() mais c'est vraiment déconseillé. (en plus je trouve ça moins lisible avec le context à écrire sur le côté)
    Utilisez plutôt cURL qui est fait spécifiquement pour appeler des URLs (et donc des API)

    Dans vos applications (https://developer.laposte.fr/applications), j'ai vu qu'il était possible de mettre une durée de validité.
    Avez-vous vérifiez que la clé n'avait pas expiré ? Avez-vous essayer de regénérer la clé ? Histoire d'être sûr qu'elle soit OK

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    c'est bien que ça fonctionne avec curl() mais en tant que développeur j'ai besoin de savoir le pourquoi des choses , j'aime aussi travailler le plus possible sans librairie externe , de plus sur un forum une personne dit avoir réussi avec filegetcontent(), je vais essayer d' écrire un petit code en c qui envois une requête http a la page cible de la poste pour voir la réponse et aussi une requête http en Kotlin avec "oKhttp" par une appli androïd car mettons que vous vouliez intégrer cette fonctionnalité sur une app et non une page web. Merci a tous de vos réponses.

  17. #17
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Je comprends un peu la démarche mais, comme je l'ai dit, file_get_contents() n'est pas fait pour ça à la base
    Théoriquement, cette fonction ne pouvait même pas appeler des URLs externes à l'origine.
    C'est un peu comme si vous vouliez creuser un lac avec une petite cuillère et que vous vous demandiez pourquoi ça n'avance pas

    cURL n'est pas considéré comme une libraire externe, c'est L'OUTIL nécessaire pour faire des appels API.

    De mon côté, je n'arrive même pas à avoir une réponse avec file_get_contents() par exemple
    Et c'est aussi le problème de cette fonction : elle n'est pas faite pour ça et dépend de la config PHP (ce qui est pire que l'utilisation d'une libraire)
    Surtout dans ce cas-ci où cURL étant utilisé un peu partout, elle est très souvent automatiquement activée sur les hébergements

    Je terminerais par dire que de toute façon, votre problème vient de la clé API vue l'erreur 401

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    Vous avez surement raison , par contre la clef est bonne , c'est la clef attribué par la poste et elle bonne et bien marqué active sur mon Dashboard, de plus comme j'ai dit plus haut il suffit de d'enlever un espace et l'erreur change de 401 à 503 (service non dispo) donc moi je me fierais pas trop à ça.

    voici un extrait du forum okapi sur "glitter" :

    Trouvé...
    Je me réponds donc à moi même...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $url = 'https://api.laposte.fr/suivi/v2/idships/2L00754800000';
    $postdata = http_build_query( array('' => '2L00754800000') );
    $opts = array('http' => array('method' => 'GET', 'header' => "Content-type: Accept: application/json\r\nX-Okapi-Key: abcdefghijklmnopqrstuvwxyz" , 'content' => $postdata ) );
    $context = stream_context_create($opts);
    $result = file_get_contents($url, false, $context);
    $parsed_json = json_decode($result);
    print ($result);
    Merci encore à vous pour votre aide.
    mais bon ça marche pas


    https://gitter.im/DeveloperLaPoste/okapi

  19. #19
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Une error 503, vous êtes sûr ?

    Rien n'est documenté à propos de cette erreur, ça ne serait pas plutôt 403 ?
    En plus du code, que dit le message ?

    A priori, si vous avez une erreur 403 c'est que vous bel et bien réussi a vous authentifié mais que vous n'avez pas souscrit à l'API comme c'est décrit dans le point 3 ici : https://developer.laposte.fr/get-started/consumer
    Pour chaque application (https://developer.laposte.fr/applications), vous devez souscrire aux API que vous souhaitez utiliser

    Le message de l'erreur 403 est : You do not have the rights to perform this action


    EDIT : Maintenant que j'ai un compte pour tester l'API je me suis dit que j'allais quand même tester avec la fonction file_get_contents(), et le vrai problème est que vous définissez content dans le stream context alors que vous ne devriez pas
    Voici mon code :
    Code php : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
     
    $api_key = 'api-key-a-remplacer-ici !';
    $shipping_id = 'LZ712917377US';
    $lang = 'fr_FR';
     
    /*** Ceci ne sert à rien
    $postdata = http_build_query(
            array(
                'id' => $shipping_id,
                'lang' => $lang
            )
    );
    */
    // Je créé un tableau qui va contenir mes headers, c'est plus facile à manipuler
    $headers = [
        "Content-type: application/json",
        "Accept: application/json",
        "X-Okapi-Key: " . $api_key,
    ];
    $opts = array('http' =>
        array(
            'method' => 'GET',
     
            // J'utilise la fonction implode() pour convertir mon tableau en string, 
           // ainsi la constante PHP_EOL qui retourne soit \r soit \n en fonction du serveur pour ne pas devoir l'écrire soit même
            'header' => implode(PHP_EOL, $headers),
           // ici vous aviez un index 'content' qui reprenait la variable $postdata qui ne sert à rien
        )
    );
    $context = stream_context_create($opts);
    $result = file_get_contents('https://api.laposte.fr/suivi/v2/idships/' . $shipping_id . '?lang=' . $lang, false, $context);
    // Print results
    echo PHP_EOL . '<pre>$result: ' . print_r(json_decode($result), true) . '</pre>' . PHP_EOL;

  20. #20
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2021
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2021
    Messages : 47
    Points : 80
    Points
    80
    Par défaut
    j'ai invariablement une erreur 401 et non 403 et je ne défini pas content comme indiqué plus haut mais accept je vais tester votre code

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/11/2016, 13h06
  2. Réponses: 0
    Dernier message: 18/01/2015, 23h45
  3. Réponses: 0
    Dernier message: 18/01/2015, 23h45
  4. Tutoriel La Poste IDentité Numérique - Intégration d'une API d'authentification avec PHP
    Par Invité dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 18/01/2015, 23h40
  5. Réponses: 0
    Dernier message: 18/01/2015, 23h23

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