Informations :
Dates
- Publish : : Tuesday 05 october 2021
- 1020 views
Share :
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.
Comment-faire ?
Créer un compte de Service
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.
Autoriser le compte de service à pourvoir accéder à votre compte Analytics
Il faudra lui (cette adresse email de compte de service) donner accès à votre compte Google Analytics depuis la plateforme Google Analytics.
- Selectionner un de vos tags/propriétés Analytics
- Cliquer en bas, sur Admin
- Puis dans les paramètres de Vues → Sélectionner Gestion des accès à la vue
- Puis ajouter l'email du compte de service en Lire et analyser par exemple.
Script PHP
Si vous n'avez pas encore installer les APIs Google, vous pouvez le faire facilement avec composer.
Initialise mon compte PHP
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() {005006if(file_exists('/var/pro/web_lib/php/vendor/google/apiclient/src/vendor/autoload.php'))007require_once $dir_web_lib.'vendor/autoload.php';008009try {010011$client = new Google_Client();012// API013$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');016017// https://developers.google.com/identity/protocols/oauth2/scopes#analytics018$client→setScopes(019array(020# API Google Analytics , v3 - https://developers.google.com/analytics021'https://www.googleapis.com/auth/analytics.readonly' // Afficher vos données Google Analytics022/*, 'https://www.googleapis.com/auth/analytics' // Affichez et gérez vos données Google Analytics023, 'https://www.googleapis.com/auth/analytics.edit' // Modifier les entités de gestion de Google Analytics024, 'https://www.googleapis.com/auth/analytics.manage.users' // Gérer les utilisateurs du compte Google Analytics par adresse e-mail025, 'https://www.googleapis.com/auth/analytics.manage.users.readonly' // Afficher les autorisations des utilisateurs de Google Analytics026, 'https://www.googleapis.com/auth/analytics.provision' // Créer un nouveau compte Google Analytics avec sa propriété et sa vue par défaut027, 'https://www.googleapis.com/auth/analytics.user.deletion' // Gérer les demandes de suppression d'utilisateurs Google Analytics028*/029)030);031032$redirect_uri = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];033034$client→setRedirectUri($redirect_uri);035036}037catch (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}042catch (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}047048return isset($client) && is_object($client) ? $client : $error;049}050[/php]
Récupération des valeurs realtime
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) {003004$id_view = isset($id_view) ? $id_view : '95109434';005006$metrics = 'rt:activeUsers';007008// 7 parametres dans les dimensions maximum009$queryParams = array(010'dimensions' => 'rt:pageTitle,rt:pagePath,rt:country,rt:city,rt:browser,rt:operatingSystem,rt:operatingSystemVersion',011'max-results' => 10012);013014try {015016$results = $analytics→data_realtime→get('ga:'.$id_view.'', $metrics, $queryParams);017018}019catch (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}024catch (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}029030return isset($results) && is_object($results) ? $results : $error;031032}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) {013014$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];020021}022endif;023 024// Puis enfin le résultat025 026if(isset($dat['rows']) && is_array($dat['rows'])):027echo '<ul>';028foreach($dat['rows'] as $rows) {029030echo '<li><a href="'.$rows['url'].'">'.$rows['title'].'</a></li>';031032}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
- API Google Analytics
- API Google Analytics : Scopes OAuth 2.0 pour les API Google - Google Analytics
- API Google Analytics : Reporting
- API Google Analytics : Google Analytics Data API (GA4)
- API Google Analytics : Documentation
- API Google Analytics : API Dimensions & Metrics
- GitHub : Google APIs - Google Analytics Data for PHP

