Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Utiliser ce code PHP pour initialiser un compte de service et afficher les pages actives sur votre site Web - API Google Analytics
Je vous écris une petite documentation pour travailler avec les API Google.
Je souhaite accéder à mon compte Google Analytics grâce à l'API Google Analytics pour afficher des valeurs sur mon site Web - ZW3B.Site :-: Stats .
Dans un premier temps, il faut créer dans votre Console Cloud Plateform sur la page Identifiants un Compte de Service - un email.
Par exemple : google-analytics@PROJECT-ID.iam.gserviceaccount.com
Récupérer les JSON de compte de Service pour l'envoyer dans la variable setAuthConfigFile
au moment de l'initialisation.
Je viens de m'apercevoir que Google API développeurs nous conseille d'utiliser :
Les clés de compte de service peuvent présenter un risque de sécurité si elles sont compromises. Nous vous recommandons d'éviter de télécharger les clés de compte de service et d'utiliser plutôt la fédération d'identité de charge de travail . Pour en savoir plus sur le meilleur moyen d'authentifier les comptes de service sur Google Cloud, cliquez ici .
Il faudra lui (cette adresse email de compte de service) donner accès à votre compte Google Analytics depuis la plateforme Google Analytics .
Si vous n'avez pas encore installer les APIs Google, vous pouvez le faire facilement avec composer
.
J'initialise le client pour accéder à Google Analytics.
Script avec 50 lignes
001[php] 002// Je précise que j'ai installé l'API Google_Client avec composer. 003 004function initializeCompteservice() { 005 006 if(file_exists('/var/pro/web_lib/php/vendor/google/apiclient/src/vendor/autoload.php')) 007 require_once $dir_web_lib.'vendor/autoload.php'; 008 009 try { 010 011 $client = new Google_Client(); 012 // API 013 $client->setApplicationName('API Google Analytics test'); 014 // Comptes de service (par exemple dans un répertoire hors web) 015 $client->setAuthConfigFile('/etc/google/google-analytics-iam.gserviceaccount.com.json'); 016 017 // https://developers.google.com/identity/protocols/oauth2/scopes#analytics 018 $client->setScopes( 019 array( 020 # API Google Analytics , v3 - https://developers.google.com/analytics 021 'https://www.googleapis.com/auth/analytics.readonly' // Afficher vos données Google Analytics 022 /*, 'https://www.googleapis.com/auth/analytics' // Affichez et gérez vos données Google Analytics 023 , 'https://www.googleapis.com/auth/analytics.edit' // Modifier les entités de gestion de Google Analytics 024 , 'https://www.googleapis.com/auth/analytics.manage.users' // Gérer les utilisateurs du compte Google Analytics par adresse e-mail 025 , 'https://www.googleapis.com/auth/analytics.manage.users.readonly' // Afficher les autorisations des utilisateurs de Google Analytics 026 , 'https://www.googleapis.com/auth/analytics.provision' // Créer un nouveau compte Google Analytics avec sa propriété et sa vue par défaut 027 , 'https://www.googleapis.com/auth/analytics.user.deletion' // Gérer les demandes de suppression d'utilisateurs Google Analytics 028 */ 029 ) 030 ); 031 032 $redirect_uri = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 033 034 $client->setRedirectUri($redirect_uri); 035 036 } 037 catch (Google_Service_Exception $e) { 038 //$error = sprintf('<p>A service error occurred: <code class="code">%s</code></p>', 039 $error = ($e->getMessage()); 040 $error = json_decode($error); 041 } 042 catch (Google_Exception $e) { 043 //$error = sprintf('<p>An client error occurred: <code class="code">%s</code></p>', 044 $error = ($e->getMessage()); 045 $error = json_decode($error); 046 } 047 048 return isset($client) && is_object($client) ? $client : $error; 049} 050[/php]
Je vous écris un script pour afficher les pages Web des internautes actifs sur une des vue (Site Web) Analytics.
Script avec 33 lignes
001[php] 002function get_active_users($id_view, $analytics) { 003 004 $id_view = isset($id_view) ? $id_view : '95109434'; 005 006 $metrics = 'rt:activeUsers'; 007 008 // 7 parametres dans les dimensions maximum 009 $queryParams = array( 010 'dimensions' => 'rt:pageTitle,rt:pagePath,rt:country,rt:city,rt:browser,rt:operatingSystem,rt:operatingSystemVersion', 011 'max-results' => 10 012 ); 013 014 try { 015 016 $results = $analytics->data_realtime->get('ga:'.$id_view.'', $metrics, $queryParams); 017 018 } 019 catch (Google_Service_Exception $e) { 020 //$error = sprintf('<p>A service error occurred: <code class="code">%s</code></p>', 021 $error = ($e->getMessage()); 022 $error = json_decode($error); 023 } 024 catch (Google_Exception $e) { 025 //$error = sprintf('<p>An client error occurred: <code class="code">%s</code></p>', 026 $error = ($e->getMessage()); 027 $error = json_decode($error); 028 } 029 030 return isset($results) && is_object($results) ? $results : $error; 031 032} 033[/php]
Tester :
Script avec 36 lignes
001[php] 002$ga['website'] = 'howto.zw3b.fr'; 003$ga['id_view'] = '95109434'; // ID de la vue (et non du tag Analytics) 004 005$analytics = initializeCompteservice(); 006$realtime = get_active_users($ga['id_view'], $analytics); 007 008$datas['rows'] = isset($realtime->rows) && is_array($realtime->rows) ? $realtime->rows : null; 009 010// Je re-écris les valeurs (avec des noms) - rows[0] est la 1ère valeur envoyée dans la $queryParams['dimensions']. 011if(isset($datas['rows']) && is_array($datas['rows'])): 012foreach($datas['rows'] as $c => $rows) { 013 014 $dat['rows'][$c]['title'] = $rows[0]; 015 $dat['rows'][$c]['url'] = '//'.$ga['website'].''.$rows[1]; 016 $dat['rows'][$c]['internaute']['country'] = $rows[2]; 017 $dat['rows'][$c]['internaute']['city'] = $rows[3]; 018 $dat['rows'][$c]['internaute']['browser'] = $rows[4]; 019 $dat['rows'][$c]['internaute']['operatingSystem'] = ''.$rows[5].' '.$rows[6]; 020 021} 022endif; 023 024// Puis enfin le résultat 025 026if(isset($dat['rows']) && is_array($dat['rows'])): 027echo '<ul>'; 028foreach($dat['rows'] as $rows) { 029 030 echo '<li><a href="'.$rows['url'].'">'.$rows['title'].'</a></li>'; 031 032} 033echo '</ul>'; 034endif; 035 036[/php]
Çà doit fonctionner - Sans avoir essayer ce script (juste ci-dessus) :/
API Google Analytics : Creating a Realtime Report
API Google Analytics : Realtime Dimensions & Metrics