API Google Analytics, découverte par l'exemple

9

Posted by Will | Posted on 22-04-2009

 Referencement  Script  PHP 5  API  Google  Analytics  SEO  Curl

Google Analytics

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

avatar

Julien Coquet  (14 May 2009 - 10:24:24)

Bonjour William,

bel effort! :)

avatar

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? ;)

avatar

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.

 

avatar

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 ;)

avatar

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 ^^

avatar

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 ?

avatar

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.

avatar

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.

avatar

Khleo  (30 November 2009 - 19:22:24)

Merci Will, je m'en suis rendu compte en relisant l'article :) .