Depuis peu, des packages Bing peuvent être utilisés via composer. Voyons voir comment faire une application qui se connecte à Microsoft BingAds. Ce n’est malheureusement pas aussi simple que chez Google (attendez vous à 2, 3 messages d’erreurs)…
Créer une application chez Microsoft
Connectez-vous sur https://developers.bingads.microsoft.com/Account avec le compte administrateur, puis dans comptes et facturation (onglet utilisateurs), créer un compte pour votre application (rôle = Utilisateur API). Vous recevrez un mail, puis un autre, validez les multiples codes qu’il vous demande pour activer le compte. Via votre compte administrateur, retournez sur https://developers.bingads.microsoft.com/Account et demandez un token de dévéloppement (le compte admin est le seul compte à pouvoir le faire).
Dans la liste des comptes doit s’afficher le nouveau compte que vous avez créé. Cliquez ensuite sur Request Token. Il se peut que cela fasse une erreur. Patientez donc une heure ou 2 (et oui c’est ca le cloud chez M$), et recommencez.
Notez bien ce developer token quelque part.
Connectez-vous ensuite sur https://apps.dev.microsoft.com/, puis créer une application.
Notez bien ID de l’application. Cliquez sur Générer un nouveau mot de passe, puis enregistrer le aussi.
Si vous faites dans le multi compte, vous aurez besoin de déclarer votre application via ce formulaire: http://advertise.bingads.microsoft.com/en-us/request-bingads-api-access
Personnellement, j’ai bien du multi compte, mais je n’ai pas eu besoin de ce formulaire.
Ajouter à votre application une plateforme web, et ajoutez lui l’url de redirection: https://login.live.com/oauth20_desktop.srf (à défaut d’en avoir une à vous).
Microsoft se met (enfin) à Composer
Ensuite, retournez dans votre application, et via composer, faites:
composer require microsoft/bingads
Cela va vous ajouter le package vendor/microsoft. Celui ci est buggé, et nécessite que vous éditiez le fichier bingads/src/Auth/IOAuthService.php, pour supprimer la ligne abstract static function getRedirectUrl($environment);
Une fois cela effectué, regardons de prêt ce qu’il y a dans ce package. Vous avez les sources (dossier src) permettant de requêter l’api, et un dossier samples pour vous indiquer comment faire les appels.
Le tutoriel MS nous demande de dupliquer le dossier samples à la racine pour pouvoir faire nos tests et d’adapter le fichier AuthHelper.php avec toutes les informations que nous avons recueillies plus haut (DeveloperToken, ClientId, ClientSecret). En cela, c’est assez simple de récupérer ses campagnes (le fichier SearchUserAccounts.php nous montre comment chercher l’utilisateur principal, et les campagnes liées). Faites juste bien attention à mettre tout votre paramétrage dans $GLOBALS[‘AuthorizationData’] avant d’appeler vos requêtes comme c’est indiqué.
Normalement, vous devez avoir vos premiers résultats, et vous vous dites que passez tout cela en mode « propre », c’est à dire dans une application web type Laravel ne sera pas trop compliqué, détrompez-vous !
Débugger BingAds pour le passer compatible Laravel
Le code MS mélange allègrement des require_once pour charger ses fichiers, ne possède pas de fichier de config pour charger ses codes secrets, et en plus est codé en final class avec des méthodes statics. Bref, vous ne surchargerez pas leur code, et en plus vous serez obligé de les appeler sans pouvoir les instancier.
Personnellement, j’ai opté pour dupliquer les 2 fichiers principaux (AuthHelper, ReportRequestLibrary), les adapter, et en créer un 3e (BingAds) que j’ai placé dans mon app\Services.
Avec cette méthode tout se charge comme il faut, et permet de générer / mémoriser un token.
Reste à vous d’intercepter l’erreur à la génération du token. Dans mon BingAds, on renvoie vers /dashboard/bingads_token?error…
Ici, en faite, vous avez besoin de vous identifier sur la plateforme MS afin de récupérer l’url contenant le paramètre code. Et ce paramètre doit revenir au final dans le $_GET[« token_uri »] du fichier BingAuthHelper. Si vous avez fait les choses correctement, vous avez alors un fichier texte oauth_bing.txt avec votre token. Notez que celui ci est valide pour simplement une heure. Il n’y a pas comme chez Google, une clé serveur qui peut être appelé tout le temps.
Du coup, seule solution pour ne pas avoir à se resaisir l’accès: faire une requête chaque heure dans un cron.
Pas si facile, mais voila une source maison pour vous aider: LaravelBing…
Enfin dernier truc, si vous travaillez avec les étiquettes (labels), vous êtes obligés de ramener les campagnes, puis les associations id labels / id campagnes et enfin les labels. C’est vraiment lent car ca nécessite plein de requêtes alors que chez Google, on a l’info directement dans les campagnes; mais bon c’est comme ça.
J’espère en tout cas que cette documentation vous aidera à démarrer. Dites moi si ça vous a aider dans les commentaires.