@codenerd på twitter Mit seneste tweet:

Google Analytics API med PHP – Del 1: Introduktion

Google Analytics API med PHP er en kort blogserie, hvor jeg gennemgår, hvordan du kommunikerer med Google Analytics API via PHP. Første del, som du læser nu, er en introduktion til APIen, samt en introduktion til de dele af PHP vi vil komme ind på. Efter denne artikel vil du være i stand til at logge ind i APIen via PHP, samt være klar til at behandle de dataudtræk vi får fra Google Analytics API.

Jeg vil forsøge at gøre denne gennemgang tilgængelig for alle på trods af niveau, men det kan nok ikke helt undgås at det til tider vil blive lidt langhåret. Hvis der er nogen tvivl så bare spørg løs!

Hvad er Google Analytics API

Ind til den 21 april var det kun muligt at se data fra Google Analytics i Googles eget interface. Dette var selvfølgelig også ganske fint, men i mange tilfælde kunne man som programmør fx godt tænke sig at kunne hive disse data ud i sin egen applikation automatisk. Dette er lige nøjagtigt hvad Google Analytics API tillader, hvad enten der er tale om en webapplikation eller et program er det nu muligt at hive data ud automatisk og præsentere det som det ønskes. Over hos Webanalytikker, blev det kort diskuteret hvad denne API giver af muligheder, og for at nævne et par:

  • Integrering i egen CMS så kunder undgår at logge ind flere steder
  • Sammenhold Analytics tal med egne tal (fx konvertering)
  • Udregn konvertering fra før E-handel var sat op på dit domæne
  • Udregn konvertering automatisk uden at E-handel er sat op (af en eller anden grund?)
  • Præsenter rapporter præcis som du ønsker det

Mulighederne er mange, det kendte ordsprog: Kun fantasien sætter grænser, gælder faktisk også her!

Hastigheden på APIen

APIen er efter min erfaring super effektiv og hurtig, derfor kan det sagtens lade sig gøre at programmere direkte op mod den, hvilket også bliver hvad vi ser på i denne blog serie. Men dermed ikke sagt at det ikke i visse tilfælde vil være nødvendigt fx at gemme de tal du hiver ud lokalt i din egen database. Dette er dog ikke noget vi ser på her.

Værktøjskassen

For at kommunikere med Google Analytics API, har jeg valgt at bruge cURL, dette kodebibliotek er ikke altid indstalleret sammen med PHP, men dette er som oftet tilfældet. Da Google sender svar tilbage i XML formatet skal vi også bruge en XML Parser. Her har jeg valgt at bruge SimpleXML, simplexml er langt det nemmeste at bruge. Du kan tjekke om din server har cURL og simplexml ved at lave en fil med følgende kode:

PHP
1
2
3
<?php
echo phpinfo();
?>

Login til Google Analytics API via PHP og cURL

For at kunne hente data ud fra APIen, kræver det selvfølgelig at vi logger ind. Dette kan vi klare via cURL, som kort fortalt er et bibliotek der gør PHP i stand til at kommunikere med fx websites eller services på nettet via forskellige protokoller.

Når man vil i kontakt med en google api er der generelt 3 metoder til at logge ind, jeg har valgt metoden ClientLogin, men du kan du læse mere om de andre hos Google, hvis du er interesseret.

Login til APIen via ClientLogin sker med samme brugernavn og password, som du normalt bruger til din analytics konto, så ha’ dem fremme og vær klar, så letter vi.

Funktionen herunder sender dit brugernavn og password til Analytics API via cURL, og retunerer enten true hvis login lykkedes eller false hvis login fejlede:

PHP
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
32
/**
* Login til analytics api
* @return boolean - logget ind eller ej
*/
function login() {
global $brugernavn, $password,$auth; //gør vores brugernavn og password globalt tilgængelige
$ch = curl_init('https://www.google.com/accounts/ClientLogin'); //start curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //vi vil ikke ha udskrevet data men gemt i variabel fx
//data array - hvilken service password og brugernavn - source kan sættes fx til navnet på din applikation
$post_data = array(
'accountType' => 'GOOGLE',
'Email' => $brugernavn,
'Passwd' => $password,
'service' => 'analytics',
'source' => ''
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //tilføj vores data til curl
$google_svar = curl_exec($ch); //udfør kald til google
$google_info = curl_getinfo($ch); //hent header info
curl_close($ch);//stop curl
$auth = '';
if($google_info['http_code'] == 200) { //hvis http header var 200 ok så fortsætter vi
//google sender en autentikations streng som vi skal bruge, denne starter med Auth= og det er det der kommer hefter vi ønsker
$auth_token = array();
//preg match kan finde det
preg_match('/Auth=(.*)/', $google_svar, $auth_token);
if(isset($auth_token[1])) {
$auth = $auth_token[1];
}
}
return ($auth != '');
}

Login skal ske via siden https://www.google.com/accounts/ClientLogin – og her skal vi sende vores password, e-mail (brugernavn).  Når man logger ind i APIen successfuldt får man et såkalt Auth Token retur. Dette auth token skal vi bruge i alle vores kald til analytics, så det gemmer vi derfor som $auth vha preg_match.

Klar til dag 2

Vi har nu en funktion klar til at logge ind i Google Analytics API – denne får du brug for i morgen hvor vi kigger nærmere på dimensioner og parametre i APIen samt hvordan vi henter vores første data ud. Derfor vil jeg anbefale at du laver en fil som ser sådan her ud, så du er klar til at lege med i morgen:

PHP
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
/**
* Analytics API fra PHP - fra www.martin-nielsen.com
*/
$brugernavn = ''; //dit analytics brugernavn
$password = ''; //dit analytics password
/**
* Login til analytics api
* @return boolean - logget ind eller ej
*/
function login() {
global $brugernavn, $password,$auth; //gør vores brugernavn og password globalt tilgængelige
$ch = curl_init('https://www.google.com/accounts/ClientLogin'); //start curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //vi vil ikke ha udskrevet data men gemt i variabel fx
//data array - hvilken service password og brugernavn - source kan sættes fx til navnet på din applikation
$post_data = array(
'accountType' => 'GOOGLE',
'Email' => $brugernavn,
'Passwd' => $password,
'service' => 'analytics',
'source' => ''
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //tilføj vores data til curl
$google_svar = curl_exec($ch); //udfør kald til google
$google_info = curl_getinfo($ch); //hent header info
curl_close($ch);//stop curl
$auth = '';
if($google_info['http_code'] == 200) { //hvis http header var 200 ok så fortsætter vi
//google sender en autentikations streng som vi skal bruge, denne starter med Auth= og det er det der kommer hefter vi ønsker
$auth_token = array();
//preg match kan finde det
preg_match('/Auth=(.*)/', $google_svar, $auth_token);
if(isset($auth_token[1])) {
$auth = $auth_token[1];
}
}
return $auth != '';
}
//forsøg at logge ind, giv fejl hvis ikke
if (login()) {
//vi er nu logget ind
echo 'logget ind';
} else {
//ikke logget ind
echo 'Der opstod en fejl i login';
}
?>

Hvis alt er gået som planlagt bør du får at vidde at du er logget ind når filen køres. Hvis du ikke kan få det til at virke så kan du hente min fil her.

8 kommentarer

  1. @Morten, den er også forholdsvis ny jo, men mulighederne er mange.

    @Niels takker – der skal nok komme mange flere

    @Vadskær Det bliver bedre 13:30 i dag hvor bloggen gerne skulle udgive del 2 😀 – er faktisk også rart at være i gang igen, og se besøgstal stige igen efter en død periode!

    Svar på kommentaren
  2. Ja lidt forsinket vil ejg også gerne sige tillykke med den “nye” blog eller havd man skal sige 😀

    Og super fed artikel-serie du har gang i i øjeblikket. Tusind tak for det. Glæder mig til at læse med igen her…

    Svar på kommentaren
  3. Pingback: Hent profiloversigt fra google analytics api med PHP | Martin Nielsens nørdede tanker

  4. Pingback: Google Analytics API med PHP - Del 3: Avancerede dataudtræk | Martin Nielsens nørdede tanker

  5. Pingback: Google Analytics API med PHP - Del 2: Hent data | Martin Nielsens nørdede tanker

Leave a Reply to Kim Andersen Cancel reply

Krævede felter er markeret med *.

*