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 :
- Authentification : utilisant la méthode ClientLogin avec votre email et mot de passe de votre compte google pour récupérer un auth token
- 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;