Présentation de l'API Google Analytics en PHP


précédentsommairesuivant

III. Pour aller plus loin

III-A. Un jeton à usage multiple

Le jeton que vous avez obtenu n'est valable qu'une fois, c'est-à-dire qu'à chaque requête, Google va vous demander de vous reconnecter (si vous essayez sans, vous recevrez à la place du flux une erreur 301 "Invalid Token" dans le corps de la réponse).

Il va falloir rendre ce jeton à usage unique permanent (nous parlerons de jeton à usage multiple). Pour cela, effectuer une requête à l'adresse "http://www.google.com/accounts/AuthSubSessionToken", en passant notre jeton actuel en en-tête. Nous recevrons une réponse du type : Token=xxxxxxx

où xxxxxxx est le jeton à usage multiple que vous devrez désormais utiliser :

 
Sélectionnez

/**
 * transformer un jeton à usage unique en un jeton à usage multiple
 * @param		string	jeton à usage unique
 * @return	string	jet à usage multiple
 */
function google_get_permanent_token($token) {
 
	$url			= 'http://www.google.com/accounts/AuthSubSessionToken';
	$new_token 		= google_call($url, $token);
 
	//
	// extraire le token du résultat
	$new_token		= str_ireplace('Token=', '', $new_token);
	return $new_token;
 
}

III-B. Un flux XML c'est bien, des données organisées c'est mieux

Vous me direz : j'ai eu un flux XML, super, mais qu'est-ce que j'en fait. Je n'arrive même pas à le parser correctement avec SimpleXML ?

Pas de souci, je vous propose une petite fonction bien pratique, que j'ai trouvée sur Alex Curelea's Dev Log

 
Sélectionnez

/**
 * parser les comptes utilisateur
 * trouvé sur Alex Curelea's Dev Log	
 * http://www.alexc.me/using-the-google-analytics-api-getting-total-number-
 	of-page-views/74/
 * @param	string	xml
 * @return	array
 */
function google_parse_account_list($xml)
{
	$doc = new DOMDocument();
	$doc->loadXML($xml);
	$entries = $doc->getElementsByTagName('entry');
	$i = 0;
	$profiles = array();
	foreach($entries as $entry)
	{
		$profiles[$i] = array();
 
		$title = $entry->getElementsByTagName('title');
		$profiles[$i]["title"] = $title->item(0)->nodeValue;
 
		$entryid = $entry->getElementsByTagName('id');
		$profiles[$i]["entryid"] = $entryid->item(0)->nodeValue;
 
		$properties = $entry->getElementsByTagName('property');
		foreach($properties as $property)
		{
			if (strcmp($property->getAttribute('name'), 'ga:accountId') == 0)
				$profiles[$i]["accountId"] = $property->getAttribute('value');
 
			if (strcmp($property->getAttribute('name'), 'ga:accountName') == 0)
				$profiles[$i]["accountName"] = $property->getAttribute('value');
 
			if (strcmp($property->getAttribute('name'), 'ga:profileId') == 0)
				$profiles[$i]["profileId"] = $property->getAttribute('value');
 
			if (strcmp($property->getAttribute('name'), 'ga:webPropertyId') == 0)
				$profiles[$i]["webPropertyId"] = $property->getAttribute('value');
		}
 
		$tableId = $entry->getElementsByTagName('tableId');
		$profiles[$i]["tableId"] = $tableId->item(0)->nodeValue;
 
		$i++;
	}
	return $profiles;
}

III-C. Exemple : lister tous les profils du compte

Nous avons donc désormais une page complète, qui va nous permettre de lister les comptes liés à notre profil.

 
Sélectionnez

//
// appel du fichier qui contient toutes les fonctions que nous avons créées. 
// Vous pouvez télécharger ce fichier dans la partie "Ressources & Fichiers" de ce tutoriel
require_once 'inc/google_functions.php';
 
//
// configuration
$profil_id	= '123456789';
$urlRetour	= 'www.monsite.fr/mapage.php';	// url de la page vers laquelle sera redirigé l'utilisateur une fois connecté
//
// Récupérer le token
$single_use_token	= google_get_token();
 
//
// Etablir la connexion à Google Analytics si pas encore de token
if(!$single_use_token) {
	google_login( $urlRetour );
}
 
//
// obtenir un token à usage multiple
$token	= google_get_permanent_token( $single_use_token );
 
 
//
// effectuer une requete : on va lister tous les comptes du profil
$accountxml = google_call("https://www.google.com/analytics/feeds/accounts/default");
 
//
// parser cette requete et afficher les résultats
$tProfiles	= google_parse_account_list($accountxml);
echo '<pre>';
print_r( $tProfiles );

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Jean-François Lépine. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.