Til Top

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:

Kopier til udklipsholder | Vis uden linie #
01 <?php
02 echo  phpinfo();
03 ?>

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:

Kopier til udklipsholder | Vis uden linie #
01 /**
02 *  Login  til  analytics  api
03 *  @return  boolean  -  logget  ind  eller  ej
04 */
05 function  login()  {
06        global  $brugernavn,  $password,$auth;  //gør  vores  brugernavn  og  password  globalt  tilgængelige
07        $ch  =  curl_init('https://www.google.com/accounts/ClientLogin');  //start  curl
08        curl_setopt($ch,  CURLOPT_RETURNTRANSFER,  1);  //vi  vil  ikke  ha  udskrevet  data  men  gemt  i  variabel  fx
09        //data  array  -  hvilken  service  password  og  brugernavn  -  source  kan  sættes  fx  til  navnet  på  din  applikation
10        $post_data  =  array(
11                'accountType'  =>  'GOOGLE',
12                'Email'  =>  $brugernavn,
13                'Passwd'  =>  $password,
14                'service'  =>  'analytics',
15                'source'  =>  ''
16        );
17        curl_setopt($ch,  CURLOPT_POSTFIELDS,  $post_data);  //tilføj  vores  data  til  curl
18        $google_svar  =  curl_exec($ch);  //udfør  kald  til  google
19        $google_info  =  curl_getinfo($ch);  //hent  header  info
20        curl_close($ch);//stop  curl
21        $auth  =  '';
22        if($google_info['http_code']  ==  200)  {  //hvis  http  header  var  200  ok  så  fortsætter  vi
23                //google  sender  en  autentikations  streng  som  vi  skal  bruge,  denne  starter  med  Auth=  og  det  er  det  der  kommer  hefter  vi  ønsker
24                $auth_token  =  array();  
25                //preg  match  kan  finde  det
26                preg_match('/Auth=(.*)/',  $google_svar,  $auth_token);
27                if(isset($auth_token[1]))  {
28                        $auth  =  $auth_token[1];
29                }
30        }
31        return  ($auth  !=  '');
32 }  

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:

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

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.

kommentarer

Skrevet d. 4. Maj 2009 14:59 af Morten
Bruger billede Hey, jeg var ikke engang klar over, at der var et Analytics API. Men det er sgu' smart.

Jeg ser frem til at læse fortsættelsen.
Skrevet d. 4. Maj 2009 21:47 af Niels Gamborg
Bruger billede Tillykke med din nye blog, Martin. :)

Og fedt at se nogle spændende programmeringsartikler fra dig igen.
Skrevet d. 5. Maj 2009 09:27 af Vadskær
Bruger billede Wow - et super-godt indlæg. Godt du fik re-designet siden, så vi igen kan nyde dine indlæg. Det her indlæg har både top-indhold og er super-relevant. Det bli'r jo ikke bedre.
Skrevet d. 5. Maj 2009 09:31 af Martin Nielsen
Bruger billede @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 :D - er faktisk også rart at være i gang igen, og se besøgstal stige igen efter en død periode!
Skrevet d. 7. Maj 2009 21:48 af Kim Andersen
Bruger billede Ja lidt forsinket vil ejg også gerne sige tillykke med den "nye" blog eller havd man skal sige :D

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...

skriv kommentar

Felter markeret med gult og * er påkrævet







Sikkerheds kode


Pingbacks

Hvis du linker til en af mine blog artikler fra et blogsystem der udsender pings vil du få et gratis do-follow link fra mig, du kna også twitte om en post og få et link til din twitter profil (Jeg forbeholder mig dog retten til at slette eller nofollow spam :P)

Kode eksempel til Analytics API | Webanalyse blog | Webanalytiker.dk
Eksempler på Google Analytics API udtræk. Få oversigten over hvordan du skal trække data ud af Google Analytics med API. [...]
Pingback d. 5. Maj 2009 08:05 fra http://twitter.com/vadskaer
Tweetback fra: @vadskaer
Suveræn start på blog-post-serie for PHP kodere med hang til Google Analytics - http://tinyurl.com/ [...]