Bonjour à tous,
Je bosse sur un site d'annonce immobilière et le client voudrait afficher sur chaque annonce le nombre de fois où cette page à été vue.
C'est typiquement le genre de données présentes dans google-analytics.
Le but serait de faire un script exécuté par un cron qui va extraire ces infos pour les enregistrer en base.
J'ai donc récupéré la librairie php 'google-api-php-client' (https://github.com/google/google-api-php-client)
Mais tous les exemples que je trouve utilise une identification OAuth 2.0 nécessitent un utilisateur actif capable de cliquer sur des lien et saisir son mot de passe. Hors je voudrai faire ça en ligne de commande (CLI)
Dans la console de google (https://console.developers.google.com/project)
Dans APIs j'ai activé Analytics API
Dans Crédentials :
j'ai crée un "CLIENT ID"
"OAuth" [CREATE NEW CLIENT ID]
J'ai choisie un Application type : "Service account"
A la création j'obtient mon "private key's password" et un fichier xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-privatekey.p12Calls Google APIs on behalf of your application instead of an end-user.
Dans la console j'ai maintenant un Service Account avec
- Client ID
- Email address. Qui est apriori utilisé comme nom de compte
- Public key fingerprints. (C'est quoi ?)
Pour le moment j'arrive à faire ça :
Déjà je ne me mange pas l'erreur "(401) Login Required"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <?php // CMS init... set_include_path("path/to/google-api-php-client/src/" . PATH_SEPARATOR . get_include_path()); $SERVICE_ACCOUNT_KEY_FILE = 'path/to/google-api-key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-privatekey.p12'; $SERVICE_ACCOUNT_NAME = 'xxxxxxxxxx@developer.gserviceaccount.com';//Email address dans la console google $GOOGLE_ANALYTICS_VIEW_ID = 'xxxxxxx'; $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); $key = file_get_contents ( $SERVICE_ACCOUNT_KEY_FILE ); $cred = new Google_Auth_AssertionCredentials ( $SERVICE_ACCOUNT_NAME, array ( Google_Service_Analytics::ANALYTICS_READONLY ), $key ); $client->setAssertionCredentials ( $cred ); if ($client->getAuth ()->isAccessTokenExpired ()) { $client->getAuth ()->refreshTokenWithAssertion ( $cred ); } $analytics = new Google_Service_Analytics($client); $analytics->data_ga->get( 'ga:' . $GOOGLE_ANALYTICS_VIEW_ID, '2012-03-03', '2014-03-03', 'ga:visits'); // Error calling GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3Axxxxx&start-date=2012-03-03&end-date=2014-03-03&metrics=ga%3Avisits: // (403) User does not have any Google Analytics account.
Cela veut-il dire que mon utilisateur est bien identifié ?
Je ne pense pas qu'il me manque grand chose... Mais j'arrive pas à mettre le doit dessus ...
Merci par avance pour votre aide![]()
Partager