
Aujourd'hui Google a mis au jour sa nouvelle API, il s'agit de l'API Google Analytics tant attendue. L'annonce officielle se trouve ici. J'ai donc sauté sur l'occasion pour pondre quelques petits scripts PHP et pouvoir par la suite intégrée Google Analytics à mon système de blog.
Cette API est utilisable en JavaScript, PHP, ou encore Java. En PHP, on peut utiliser cette API avec Zend (ici) ou avec Curl. C'est ce dernier que j'ai utilisé dans ce qui suit.
I - Authentification
Il faut être authentifié pour utiliser cette API, Google offre, comme pour ses autres services, plusieurs possibilités. Je passerais les explications lourdes sur les différents modes d'authentification (lire ici). Ce qu'il faut au final, c'est récupéré un Token qui permettra d'utiliser le service Google Analytics par la suite.
Je voulais un système d'authentification où l'on ai juste à renseigner ses identifiants Google.
$email = '*********@*********';
$passwd = '********';
$ids = '********';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = array('accountType' => 'GOOGLE',
'Email' => $email,
'Passwd' => $passwd,
'source'=>'CLI_GAnalytics',
'service'=>'analytics');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$hasil = curl_exec($ch);
$hasil = @split("Auth=", $hasil);
$auth = $hasil[1];
curl_close($ch);
Donc j'ai utilisé Curl, ce qui a nécessité l'activation du module PHP (dans WAMP).
$ids représente l'identifiant du site concerné. Il est à récupérer dans Google Analytics, il suffit d'ouvrir le dashboard du site et de regarder l'identifiant dans l'url qui se présente ainsi : https://www.google.com/analytics/reporting/?id=xxxxxxxxx.
On passe ensuite les données dans un tableau, en sachant que vous pouvez mettre ce que vous voulez dans 'source'.
$auth est mon Token d'authentification auprès du service Google Analytics.
II - Récupération des informations
Je désire afficher, pour le jour courant (oui parce que l'API permet de récupérer les informations de son site en direct), le nombre de visites par navigateur.
$current_date = date('Y-m-d', time());
$ch1 = curl_init("https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:visits&dimensions=ga:browser&start-date=" . $current_date . "&end-date=" . $current_date);
$header[] = 'Authorization: GoogleLogin auth=' . $auth;
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch1, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_HEADER, false);
$response = curl_exec($ch1);
curl_close($ch1);
$XML_response = @str_replace('dxp:','',$response);
$XML_object = simplexml_load_string($XML_response);
echo '<ul>';
foreach($XML_object->entry as $m)
{
$tmp = @split('ga:browser=', $m->title);
echo '<li>' . $tmp[1];
echo ' : ';
echo $m->metric['value'];
echo ' visits</li>';
}
echo '</ul>';
Lorsqu'on veut utiliser l'API il faut indiquer que l'on est authentifié, c'est le but des lignes :
$header[] = 'Authorization: GoogleLogin auth=' . $auth; curl_setopt($ch1, CURLOPT_HTTPHEADER, $header);
Ensuite, il est obligatoire de renseigner les paramètres ids, start-date et end-date. Sinon on obtient une belle erreur... Ici, je cherche à récupérer le nombre de visites (qui est le metric) en fonction du navigateur qui est la dimension.
https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:visits&dimensions=ga:browser&start-date=" . $current_date . "&end-date=" . $current_date);
Les metrics et dimensions sont disponibles ici.
On récupère un flux XML, que j'ai d'abord épuré :
$XML_response = @str_replace('dxp:','',$response);
Puis je charge un objet XML pour récupérer les résultats que je souhaite.
Ce code produit le résultat suivant :
- Chrome : 1 visits
- Firefox : 15 visits
- Internet Explorer : 3 visits
Youpi ! Je suis riche, 19 visites aujourd'hui...
Pour récupérer le nombre de visiteurs, il suffit de modifier les metrics et dimensions :
https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:visits&start-date=" . $current_date . "&end-date=" . $current_date);
et de changer l'accès au résultat :
echo $XML_object->entry->metric['value'] . ' visits';
Pour récupérer le nombre de pages vues, on modifie comme ceci (l'accès au résultat est le même) :
https://www.google.com/analytics/feeds/data?ids=ga:" . $ids . "&metrics=ga:pageviews&start-date=" . $current_date . "&end-date=" . $current_date);
III - Le mot de la fin
Cette API est très intéressante et très simple à mettre en oeuvre. La documentation est claire et il y en a beaucoup.
Pour la suite, il peut être intéressant d'avoir ce genre de statistiques dans l'administration de son site ou de naviguer en administrateur et de pouvoir voir sur chacun de ses articles de telles statistiques.
Pour moi, ce sera cette dernière idée qui sera mise en place
.
Sources : http://google-data-api.blogspot.com/2008/05/clientlogin-with-php-curl.html pour l'utilisation de Curl, et l'API Google pour le reste.






Commentaires
Ajouter un commentaire
Julien Coquet (14 May 2009 - 10:24:24)
Bonjour William,
bel effort! :)
Julien Coquet (14 May 2009 - 10:24:24)
arg commentaire coupé en plein vol...
je voulais dire que ton code ressemble quand même beaucoup à s'y méprendre au mien sur
http://analyseweb.fr/google-analytics/petit-exemple-d'implementation-de-l'api/
Cite tes sources? ;)
Will (14 May 2009 - 10:24:24)
Bonjour Julien,
effectivement, nos codes se confondent, tu utilises Zend et moi Curl, c'est très ressemblant du début à la fin, je dirai même que trois lignes se ressemblent...
Je ne comprend pas bien ton "accusation", mes sources sont citées à chaque fois. J'ai rajouté ce qui m'a servi pour Curl, pour le reste la doc' suffit.
Ton code sera cité comme exemple Zend puisqu'il semble bon, fallait y penser...
Merci.
Julien Coquet (14 May 2009 - 10:24:24)
On va pas se battre mais clairement tu as buté sur le problème du nommage des tags avec les ":" et tu as utilisé le meme replace que dans mon code :)
sans rancune et bonne soirée ;)
keusta (03 July 2009 - 18:49:46)
est ce qu'il te serait possible de partager tes sources par le bias d'un zip téléchargeable ?
Merci par avance, car je galère un peu ^^
Will (03 July 2009 - 18:55:34)
Bonjour Keusta,
sur cet article http://www.willdurand.fr/posts/22/api-google-analytics-une-classe-php5-et-des-resultats-d-integration.html tu trouveras le code entier sous forme d'une classe PHP5.
Est-ce suffisant ?
Khleo (29 November 2009 - 05:33:16)
Bonjour,
Merci pour l'exemple concret et rapide à mettre en place :)
Je voudrais savoir où trouver la documentation complète pour utiliser les parametres de l'URL.
Will (29 November 2009 - 12:53:58)
@Khleo : bonjour, comme cité dans cet article, les paramètres à modifier dans l'url se nomment dimension et metric. Vous trouverez les paramètres à cette adresse.
Khleo (30 November 2009 - 19:22:24)
Merci Will, je m'en suis rendu compte en relisant l'article :) .