Le blog WAIBE.FR, des astuces pour faire votre site Internet...



Comment utiliser la nouvelle API PHP V6 de programmation d’OVH ?

17 janvier 2016



Ce titre peut paraitre surprenant pour les personnes qui sont habituées à lire les articles de mon blog : en général, je fais tout pour éviter de parler de technique à mes clients : laissons la technique aux techniciens. Mais dans mon travail au quotidien, je suis amené à faire de la technique, et depuis bientôt un mois je me bats avec une évolution technologique qui m’est imposée par mon hébergeur, l’API OVH : cela signifie que je dois changer le mode de dialogue entre les logiciels que je mets à votre disposition, et l’hébergement de vos sites Internet. C’est un peu comme si je parlais Français avec vous, et que je vous dise « dans 3 mois, nous parlerons slovaque » : vous allez devoir apprendre le slovaque ;-)

 

ATTENTION : Mise à jour du 3 août 2017

Comme à son habitude, OVH change les paramètres de configuration de ses hébergements sans vraiment prévenir ses clients, et sans vraiment évaluer toutes les conséquences que cela peut avoir. En l'occurence, depuis quelques jours les appels à l'API OVH que je vous ai proposée ne marchent plus, vous avez droit à une erreur "ERROR (#0000) : Compute time drift fail !"

Comment résoudre ce problème: c'est très simple, vous devez juste modifier la configuration de votre hébergement pour la faire passer de LEGACY à STABLE. Comment faire ? C'est ici : https://docs.ovh.com/fr/fr/web/hosting/modifier-lenvironnement-dexecution-de-mon-hebergement-web/

Une fois cette modification faite, tout remarche comme avant...

Et si vous utilisez mon API pour la première fois, commencez bien évidemment par faire ce petit réglage...

 

Introduction

OVH est un très bon hébergeur, mais il n’y a pas que des côtés positifs dans sa manière de travailler.  Il y a 6 mois, il nous a déjà imposé un changement de version de PHP, le langage de base utilisé par mes logiciels. J’ai donc dû reprendre tous les sites Internet que j’ai réalisés et m’assurer qu’ils continuaient de fonctionner malgré ce changement de version, et corriger ceux qui ne marchaient plus. Plus de deux mois de travail pour moi, autant de manque à gagner sur le point de vue financier car pendant que je programme, je ne fais pas de sites web.

Là encore, ce changement de langage pour l'API m’oblige à reprogrammer une partie du logiciel. Cela pourrait se faire simplement si on avait suffisamment d’explications de la part d’OVH, des exemples concrets, mais ce ne fut malheureusement pas le cas ici. Il a fallu apprendre par soi-même, avec une documentation obscure, des logiciels imposés, et très peu d’exemples concrets. Et sur le coup, c’est encore un mois de perdu pour ma société, et une perte de chiffre d’affaire non négligeable…

Et je ne vous parlerai pas de la fermeture prématurée du manager V3 à la fin 2015, alors que le nouveau manager était bugée jusqu’à la moelle et totalement incomplet : OVH a dû le remettre en œuvre rapidement devant le mécontentement de ses clients.

 Bref la prise en compte des problématiques des clients n’est pas le fort d’OVH, c'est un peu comme son support technique qui met 1 semaine pour répondre à une question, souvent à côté de la plaque, et cela malgré la qualité de ses hébergements. 

Tout cela pour vous dire que je continue à veiller à la bonne marche de vos sites Internet en assurant une maintenance continue et à suivre les évolutions technologiques, celles que je choisis ou celles qu’on m’impose. C’est pour cela que certains sites qui ont plus de 10 ans d’âge continuent de fonctionner. Et c’est également à ça que servent les abonnements que vous payez : la maintenance de vos sites en état de marche.

 

Parlons technique maintenant : la fameuse API V6 OVH

La suite de cet article s’adresse à ceux qui veulent comprendre comment utiliser cette nouvelle interface de programmation (pour les non techniciens, on aborde le langage chinois...) : comme il n’y a que très peu d’exemples de programmation, et que l’interface de programmation est complexe, j’ai préparé quelques tutos pour les techniciens qui sont à la recherche d’informations. Je l'avais promis à certains lecteurs, c'est donc chose faite.

Je vous explique ici comment aller au plus vite pour utiliser la nouvelle API de programmation OVH, sans rentrer dans les détails. Pour ceux qui veulent tout comprendre et aller plus loin, vous trouverez les informations ici : 

 

Pour utiliser la nouvelle API V6 d’OVH, vous avez la possibilité d’utiliser deux wrappers différents :

  • Le wrapper PHP officiel d’OVH
  • Une API codée avec cURL que je vous propose, beaucoup plus simple.

 

C’est donc cette deuxième solution qui a ma préférence, mais je vais d’abord vous expliquer pourquoi.

 

Le wrapper PHP d’OVH : la version officielle, mais complexe pour l'API V6

OVH a réalisé un wrapper PHP, qui est sensé simplifier l’utilisation de l’API : https://github.com/ovh/php-ovh. Une fois installé, il est en effet simple d’emploi (quand on a compris le principe de fonctionnement de l’API). La problématique est de l’installer, de faire les premiers cas d’usage et de comprendre comment traiter les erreurs

Malgré tout, bien qu’ayant réussi à la mettre en œuvre, je trouve qu’il y a plusieurs problèmes liés à ce wrapper : 

  • Il impose plusieurs frameworks & outils que vous devez apprendre à maîtriser, entre autres Composer et Guzzle. Donc beaucoup de temps perdu pour comprendre comment ça marche, et surtout le mettre en œuvre avec l’API. Et en ce qui me concerne, j’aime choisir mes frameworks, et surtout pas qu’on me les impose, je n’ai pas de temps à perdre pour apprendre de nouveaux outils que je n’ai pas choisis puisque j'ai une société à gérer et plein d'activités passionnantes autres que la programmation informatique ;-)
  • Dans ce cas particulier de ce wrapper, c’est à mon avis sortir l’artillerie lourde pour rien : au total, vous allez avoir plus de 400 fichiers d’installés pour faire de simples appels GET, POST, PUT ou DELETE. A titre de comparaison, l’API que je vous propose est composée d’un seul fichier d’une centaine de lignes, et ça fait la même chose…
  • Si vous utilisez le wrapper PHP officiel avec un environnement de développement local type easyPhp, il ne marche pas (problème liés aux certificats SSL – il faut modifier un fichier). J’ai pallié ce problème dans l’API cURL.
  • De temps en temps, et sans raison apparente, des « fatal error » apparaissent, liés à l’utilisation de Guzzle. C'est marrant car ces erreurs sont aléatoires, va comprendre Charles ! Il faut donc ajouter les bonnes séquences try / catch pour pallier à ces erreurs (j’ai abandonné avant), voire modifier la configuration Guzzle. Vous n’aurez pas ce problème avec l’API cURL que je vous propose.

 

Le Wrapper cURL pour l'API OVH V6

Plus simple à installer et à utiliser, je vous recommande le Wrapper  cURL. A l’origine il avait été fait par https://github.com/ovh/php-ovh. Je l’ai récupéré, et je l’ai légèrement modifié pour corriger quelques bugs liés à l’utilisation du GET (gestion des paramètres), simplifier l’usage et faire en sorte qu’il marche aussi avec easyPhp (problèmes SSL).

Je vous mets à disposition 3 fichiers dans un ZIP, qui seront utilisés dans la suite de ce tutotiel. CLIQUEZ ICI  pour les télécharger. Installez ces fichiers sur votre hébergement, ou en local avec easyPhp.

 

Initialisation de l’API cURL

Donc pour faire simple et vite, vous avez besoin de 3 clefs : AK, AS, et CK. 
Les deux premières AK et AS s’obtiennent ici : https://eu.api.ovh.com/createApp/
Saisissez votre identifiant OVH, votre mot de passe, donnez un nom à votre application, et une description. Cliquez sur « Create Keys »
 

api v6 ovh compte 

 

Là vous obtenez vos deux premières clefs.
 

api v6 ovh clefs 

(Bien évidemment, les clefs de cet exemple sont fictives, inutile d’essayer de les utiliser)

Ouvrez ensuite le fichier OvhApi.php que je vous ai fourni dans le ZIP. Vous allez devoir mettre les clefs dans ces define en haut de fichier (il faut les mettre à jour) : 

  • define("MY_AK", "XXX");     // Clef application 
  • define("MY_AS", "YYY");     // Secret key 
  • define("MY_CK", "ZZZ");     // Consumer key : à récupérer avec get-key3.php

 

Copiez / collez les deux premières clefs dans les « define » correspondant, en haut de fichier 

  • Remplacez XXX par votre clef  AK
  • Remplacez YYY par votre clef AS
  • Sauvez votre fichier

 

Ensuite, appelez le fichier get-key3.php pour récupérer la 3ème clef, qui s’affichera à l’écran. Vous avez deux actions à faire : 

  • Copiez cette clef dans le fichier OvhApi.php, dans le define MY_CK : Remplacez ZZZ par votre clef CK
  • Cliquez sur le lien d’activation de la clef : vous devez choisir la durée de validité, puis cliquez sur « Authorize Access »

 

api v6 ovh clefs2 

 

Tester l’API avec le Wrapper cURL

Je vous ai mis un fichier « test.php » dans lequel j’ai codé quelques actions pour que vous ayez des exemples de codes. Vous pouvez obtenir des informations sur un nom de domaine, gérer des mails de redirection, ou gérer des mailing list. Si vous avez besoin de plus d’actions, posez directement vos questions sur le forum OVH (je ne connais pas l’API par cœur, et ne pourrai pas faire tous les tests pour vous ;-)

Pour utiliser test.php, vous devez d’abord initialiser les variables qui se trouvent en haut de fichier avec vos propres noms de domaines, de mailing liste, de mails, etc. J’ai mis des variables « bidon » pour l’exemple, donc ça ne marchera pas de base.

 

CLIQUEZ ICI POUR TELECHARGER LES FICHIERS

 

 

Ecrire un commentaire

(Tous les commentaires seront validés par le webmaster avant d'etre publiés)

Votre nom


Votre texte


Tapez le code à gauche*



Il y a 27 commentaires...

Christophe Arsonnaud - 27 janvier 2016

Merci pour ces scripts php, j'ai enfin compris qqchose, et j'ai pu commencer à corriger le site dont je m'occupe (une association).
Christophe.

David Arneau - 27 janvier 2016

Parfait ! Je suis heureux que cela ait pu vous aider, les documentations et frameworks OVH étant si peu clairs... Bonne continuation.

JMG - 28 janvier 2016

Dans le même cas que vous je doit adapter plusieur utilisation de l'api .... dans un délais très court .... arfff ... merci ovh !

Merci pour ce mini tuto ... bien plus compréhensible que les explication de ovh pour les " débutants " ...

Manu - 06 février 2016

Merci pour ce tuto. Avec ça c'est beaucoup plus facile pour moi de capter le fonctionnement et faire la transition vers le nouvel API. En effet tout le truc des wrappers c'est cool, mais ce n'est pas forcément pour tout le monde.

Yann Hérault - Cabinet médical Péan - 19 février 2016

Je n'ai rien compris!!!!
Mais je vous fais confiance et je sais comme les changements de règles du jeu unilatéraux sont contraignants et énervants pour les gens qui les subissent.
Bon courage.
Question bête: Pourquoi ne pas changer d'hébergeur?

Antoine - 01 mars 2016

** MERCI **
Je suis tombé sur vos explications pragmatiques juste au moment où j'allais devenir fou avec les "explications" d'OVH pour installer le wrapper PHP.
Votre petit script sera simple à adapter et suffisant pour bien des usages.

David Arneau - 01 mars 2016

Merci à tous pour vos commentaires, si ce petit script vous aide, c'est parfait !

yohan - 27 mars 2016

Bonjour,

MERCI pour ton script. c'est vrai que la nouvelle api ovh est mal documentée.

j'arrive à lancer le script à partir de mon browser, mais impossible de le lancer directement à partir d'une connexion Putty.

message :
PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112) in /var/www/clients/ovh_test/OvhApi.php on line 57

une idée ?

yohan

Jack - 20 juin 2016

Bonjour,
Merci pour ce tuto super génial.Mais j'ai une erreur:
Notice: Undefined index: cartId in C:\xampp\htdocs\tuto-api-ovh\test.php on line 52

merci d'avance

Lionel VEST - 15 juillet 2016

Beaucoup, beaucoup, beaucoup plus simple que le wrapper recommandé par OVH. J'ai vite fait mon choix !

Gautier Michelin - 03 août 2016

Hello,

Pas moyen de mettre les scripts sur Github ?
Cela permettrait d'y contribuer :-)

Gautier

Hawa Bane - 25 août 2016

C'est très généreux de votre part!
Merci énormément, ça m'a été d'une grande utilité!

Pisamad - 04 septembre 2016

Excellent travail. Dommage que ce ne soit pas OVH qui l'ai fait !

greg - 16 septembre 2016

Bonjour et merci !

Une petite question je ne comprend pas comment exécuter cette partie :
Ensuite, appelez le fichier get-key3.php pour récupérer la 3ème clef, qui s’affichera à l’écran. Vous avez deux actions à faire... si je ne comprend pas comment appeler le fichier get-key3.php ?

Merci pour votre aide

AD WAIBE - 16 septembre 2016

En réponse à votre question, si votre site est www.monsite.com, vous placez le ficher get-key3.php sur le site et vous appelez www.monsite.com/get-key3.php

Skipi D - 17 octobre 2016

Bonjour, et merci pour ce tuto.
une petite question, je récupère dans $POST['num'] le numeroe à appeler (qui arrive d'un champ de saisi en html). j'associe $ligne_a rappeler= $POST['num'].
Ensuite :
$resp = $ovh->post('/telephony/ovhtel-xxxx-1/line/xxxxxxxxx/click2Call', array(
'calledNumber' => $POST['num'], // Required: (type: string)
'intercom' => 'false', // Activate the calling number in intercom mode automatically (pick up and speaker automatic activation). (type: boolean)
));

et là j'ai un message :
Array
(
[message] => Missing calledNumber parameter while calling click2Call
)
alors que si je met le numéro en dur ça fonctionne.
si vous avez une idée.
bien cordialement

AD-WAIBE - 17 octobre 2016

A mon avis, votre $POST n'est pas bon (ou plutôt $_POST). Faites un print_r ($_POST) et je pense qu'il n'y a pas de champ "num". Je pense qu'il vaut mieux regarder dans $_REQUEST ['num']

FRanck - 04 novembre 2016

Beau travail ! Claire, limpide ! Merci à vous !

Ludovic - 15 décembre 2016

Bonjour,

Je vous remercie beaucoup pour votre article, qui va beaucoup m'aider! Et quel différence entre l'api ovh et votre fichier!

L'api OVH est plutôt claire pour les différentes actions possible, par contre c'est vraiment le plus grand flou pour la configuration et création des crédits de connexion de base!

Bonne continuation!

Oyeee - 16 décembre 2016

Génial, un grand merci !!

david combarieu - 17 janvier 2017

merci pour ces explications très claires, je vous cite sur mon nouveau blog : http://combari.eu/?it=14846559703950%26i%3DExplications--la-nouvelle-API-PHP-V6-de-OVH

Olivier - 30 janvier 2017

Sincèrement Merci; j'allais devenir chèvre avec la doc et les fichier OVH!

ar - 19 avril 2017

Bonjour,

Merci pour votre tutoriel très bien fait ! Je voudrais executé le get sur un domaine externe (n'étant pas sur mon compte OVH), est-ce possible ? Car ça m'affiche une erreur alors que ça fonctionne bien pour mes NDD...
Merci !

leplutonien - 19 juillet 2017

bon article

Thomas - 26 juillet 2017

Bonjour,

J'ai me message suivant pour "Liste mail de mailing liste" :
Array
(
[message] => This service does not exist
)

Savez-vous à quoi c'est du ?

A+
Thomas

PierreJo - 31 août 2017

Ahhhhh Super !
Merci beaucoup, vraiment...
Les pages d'OVH sont incroyablement succintes et peu claires, là au moins, tout fonctionne rapidement.
Well done, callaghan !

Thibaud - 14 novembre 2018

Bravo !
Il faudrait des gens comme vous chez OVH !

facebook partager

 

www.waibe.fr - Comment créer un site Internet pas cher, le modifier à volonté, et sans aucune connaissance informatique
Création de site Internet à petit prix pour PME, PMI, association, indépendant, profession touristique, photographe, modèle...

 

Comment créer un site photo pas cher. Création site web pas cher. Liens vers des sites photo - Comment créer un site Internet pour autoentrepreneur ? - Creation de sites Internet Bassin d'Arcachon - duovip.waibe.fr -