Informations :
Dates
- Publish : : Tuesday 05 october 2021
- 373 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() {
005006
if(file_exists('/var/pro/web_lib/php/vendor/google/apiclient/src/vendor/autoload.php'))
007require_once $dir_web_lib.'vendor/autoload.php';
008009
try {
010011
$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');
016017
// https://developers.google.com/identity/protocols/oauth2/scopes#analytics
018$client→setScopes(
019array(
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);
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}
047048
return 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 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);
013014
try {
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}
029030
return 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ésultat
025 026if(isset($dat['rows']) && is_array($dat['rows'])):
027echo '<ul>';
028foreach($dat['rows'] as $rows) {
029030
echo '<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