Page 1 sur 2
[API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 19:01
par Flashneo
Bonjour,
J'aimerais utiliser une api qui provient d'amadeus et pour se faire il me faut récupérer un token, j'ai donc fait ce bout de code :
$data = array(
'grant_type' => 'client_credentials',
'client_id' => '{Id_Key}',
'client_secret' => '{Secret_Key}');
$curls = curl_init();
curl_setopt($curls, CURLOPT_URL, 'https://test.api.amadeus.com/v1/security/oauth2/token');
curl_setopt($curls, CURLOPT_POST, true);
curl_setopt($curls, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curls, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$token = curl_exec($curls);
curl_close($curls);
print_r($token);
Mais il ne me renvoie rien... J'ai donc essayé dans le cmd avec la commande curl suivante :
curl -X POST -H "Content-Type: application/x-www-form-urlencoded"
https://test.api.amadeus.com/v1/security/oauth2/token -d "grant_type=client_credentials&client_id={Id_Key}&client_secret={Secret_Key}"
Et j'ai bien obtenu une réponse ! Je ne sais pas d'où cela pourrait venir, auriez-vous une idée ? Ais-je mal écris mon code php ?
Merci d'avance
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 19:22
par Saian
Salut, bah moi j'ai bien un retour : { "error":"invalid_client", "error_description": "Client credentials are invalid", "code": 38187, "title": "Invalid parameters" } 1
La lib curl n'est pas disponible sur ton serveur et la directive display_errors est à off ?
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 19:27
par Flashneo
Merci de ta réponse, non curl est bien activé, par contre je suis peut-être à off oui...
Je me rappelle plus comment mais j'avais réussi à avoir le même message que toi
Edit: Je viens de checker et la directive display error est bien activé
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 19:36
par Saian
Dans ce cas tu devrais avoir un retour, j'ai copié ton code et j'ai toujours ce retour. Si tu veux le même met un paramètre non valide. A voir avec un client_id et client_secret valide ce qui est retourné mais ça je peux pas regarder à moins que tu me les communiques en MP.
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 19:39
par Flashneo
Pourtant non aucun retour même avec le code que je t'ai partagé...
Edit: je t'ai envoyé un mp
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:14
par Saian
Juste comme ça, si tu testes ce code :
$data = array(
'grant_type' => 'client_credentials',
'client_id' => '{Id_Key}',
'client_secret' => '{Secret_Key}');
$curls = curl_init();
curl_setopt($curls, CURLOPT_URL, 'https://test.api.amadeus.com/v1/security/oauth2/token');
curl_setopt($curls, CURLOPT_POST, true);
curl_setopt($curls, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curls, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$token = curl_exec($curls);
curl_close($curls);
echo 'FIN';
Ça affiche bien FIN ?
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:39
par Flashneo
Oui ça m'affiche bien "FIN" ^^
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:44
par @rthur
Ma recommandation serait surtout de tester l'API avec une appli comme Postman :
https://www.getpostman.com/postman
ça permet déjà d'éliminer tous les problèmes quand la doc n'est pas claire.
Une fois que tu as la réponse attendue dans Postman, tu peux même demander un export de cette requête de PHP-Curl et hop tu peux intégrer ce code dans ton appli
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:46
par Saian
Salut @rthur, le problème c'est que le code fonctionne depuis mon serveur mais pas depuis celui de Flashneo. Une idée ?
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:50
par Saian
Ah tiens peut être ajouter un
curl_setopt($curls, CURLOPT_SSL_VERIFYPEER, false);
.
En tout cas c'est bizarre le retour du curl_exec devrait au moins afficher 1 si pas d'erreur ou 0 si erreur. A moins que pour le false rien ne soit affiché.
Tu peux tester un :
$token = curl_exec($curls);
if (!$token) {
echo curl_error($curls);
}
else {
var_dump($token);
}
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:52
par Flashneo
Merci beaucoup Saian, je viens d'ajouter cette ligne et ça fonctionne !!!
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:53
par Flashneo
Maintenant je me demande pourquoi j'ai besoin de cette ligne et pas toi ? ^^
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:55
par Saian
Ok tu devais donc avoir un retour false sur curl_exec et une erreur SSL.
Et le code que j'ai ajouté dans mon message précédent t'aurais permis d'avoir l'erreur.
EDIT : surement une question de configuration de CURL.
Re: [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 20:58
par Flashneo
Surement alors, mais c'est étrange que je n'avais rien d'afficher nul part ^^ En tout cas merci beaucoup de ton aide, je vais enfin pouvoir commencé à tester cette API xD
Re: [RESOLU] [API][Curl][Amadeus] Connexion a une api en php
Posté : 10 juin 2019, 21:00
par Saian
Bah en fait c'est que c'est une erreur curl qui ne lève pas d'erreur php et que tu aurais pu tester comme ceci dans ton code (le retour de curl_exec étant false si une erreur est survenue durant son exécution) :
$token = curl_exec($curls);
if (!$token) {
echo curl_error($curls);
}