• Ce blog — désormais archivé — est en lecture seule.

API Google Analytics, découverte par l’exemple

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.

  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • FriendFeed
  • LinkedIn
  • MySpace
  • Netvibes
  • PDF
  • Ping.fm
  • RSS
  • Technorati
  • viadeo FR
  • Wikio
  • Yahoo! Buzz

Related Posts

Cet article a été publié dans Ancien blog avec les mots-clefs : , , , , , , . Bookmarker le permalien. Les commentaires et les trackbacks sont fermés.