Utiliser Google Analytics Export Api

Dans cet article je vous propose une solution pour récupérer le nombre de visiteurs d’un de vos site tracé par google analytics. Cela deux étapes :

  1. Authentification : utilisant la méthode ClientLogin avec votre email et mot de passe de votre compte  google pour récupérer un auth token
  2. Requête : utilisant le auth token.

Authentification

$url = 'https://www.google.com/accounts/ClientLogin';
$fields = array(
 'accountType'=>urlencode('GOOGLE'),
 'Email'=>urlencode('YOUR EMAIL'),
 'Passwd'=>urlencode('YOUR PASSWORD'),
 'service'=>urlencode("analytics"),
 'source'=>urlencode('GROUP NAME-APP NAME-VERSION')
 );

$fields_string='';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

$ch = curl_init();
// utile pour les problème de ssl (mais pas parfait niveau sécurité)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

if(($result = curl_exec($ch))===false)
{
 curl_close($ch);
 exit('Curl Error: '.curl_error($ch));
}
curl_close($ch);

echo $result;
/*
de la form "**********************\n Auth=********"
*/

Il faut récupérer la variable Auth Si vous ne savez pas comment :


if(strpos($result,"\n")!==false)
{
  $results=array();
  $result=explode("\n",$result);
  foreach($result as $r)
  {
    if(strpos($r,'=')===false)
    {
      continue;
    }
    $temp = explode('=',$r,2);
    $results[$temp[0]] = $temp[1];

  }

}
$auth = $results['Auth'];

Requête

ensuite on peut faire les requêtes qu’on veut. Un exemple simple : le nombre de visiteurs depuis le début du mois:

</pre>
$url = 'https://www.google.com/analytics/feeds/data?'.
'ids=SITE ID exemple : ga:12345&metrics=ga:visits&start-date='.$first_day_of_last_month.'&end-date='.$last_day_of_last_month.'&v=2';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HTTPHEADER,
array( "GData-Version: 2",
'Authorization: GoogleLogin auth='.$_SESSION['ga']['auth']
));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
if(($result = curl_exec($ch))===false)
{
curl_close($ch);
exit('Curl Error: '.curl_error($ch));
}
curl_close($ch);

echo $result; // xml 

On peut traiter facilement le résultat, par exemple dans notre cas :

$doc = new DOMDocument();

$doc->loadXML(request($params));

$metrics = $doc->getElementsByTagName('metric')->item(0)->getAttribute('value');

echo 'Visiteurs : '.$metrics;

Comments are closed.