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.
Links i dette indlæg
Relaterede blogindlæg
kommentarer
Jeg ser frem til at læse fortsættelsen.
Og fedt at se nogle spændende programmeringsartikler fra dig igen.
Link til seneste blogindlæg: Microsoft Expression Web SuperPreview
Link til seneste blogindlæg: Jeg siger tillykke
@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!
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
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. [...]
Tweetback fra: @vadskaer
Suveræn start på blog-post-serie for PHP kodere med hang til Google Analytics - http://tinyurl.com/ [...]









