Codeigniter ile Google Analytics Verilerini Çekmek
Yazar: tkaratug / Kategori: Codeigniter / Yorum: 3

Herkese merhaba. Bu yazımda sizlere Codeigniter Framework'ünü kullanarak Google Analytics verilerini nasıl çekebileceğimizi anlatacağım. Web üzerinde bulunan pek çok benzer makalede anlatılan yöntemler, Google'ın eski API sürümleri ile kullanıldığından mevcut v3.0 sürümü ile çalışmamaktadır. Bugün sizlerle OAuth v2.0 ile bağlantı kurup analytics verilerini çekeceğiz.
Verileri çekmek için Github'daki erebuznz adlı kullanıcının yazmış olduğu GAPI adlı kütüphaneyi kullanacağız. Kütüphaneye aşağıdaki linkten ulaşabilirsiniz.
https://github.com/erebusnz/gapi-google-analytics-php-interface
1- Google Developer Console Üzerine Proje ve Client ID Oluşturma
Kütüphaneyi kullanmadan önce Google Developer Console'a giriş yapıp yeni bir proje yaratmamız ve bu projeye ait bir Client ID oluşturmamız gerekiyor.
Öncelikle aşağıdaki ekran görüntüsünde de belirttiğim gibi "Create Project" butonuna tıklıyoruz.
Açılan pencereden projemize bir isim veriyoruz ve "Create" diyerek oluşturuyoruz. Dilerseniz "Show advenced options" butonuna tıklayarak projenizin çalışacağı API sunucu lokasyonunu seçebilirsiniz.
Projemizi oluşturduktan sonra ismine tıklayarak detay sayfasına giriş yapıyoruz. Soldaki menüden "APIs & auth" içerisindeki "APIs" sayfasına gidiyoruz. Karşımıza gelen listeden "Advertising APIs" altındaki "Analytics API" linkine tıklıyoruz.
Açılan sayfada sol üst köşede bulunan "Enable API" butonuna tıklayarak API' ımızı aktif hale getiriyoruz.
Aynı sayfada bulunan "Usage" sekmesinden API 'ı kullanmaya başladıktan sonra yaptığınız request adetini grafik üzerinde takip edebilirsiniz.
Daha sonra soldaki menüden, yine "APIs & auth" altında yer alan "Credentials" sayfasına gidiyoruz. Bu sayfanın sol üst köşesinde bulunan "Create new Client ID" butonuna tıklıyoruz.
Açılan pencereden "Service Account" seçeneğini işaretleyip "Create Client ID" butonuna tıklıyoruz. İşlem sonucunda json uzantılı bir dosya otomatik olarak bilgisayarınıza inecektir. Bu dosyayı silebilirsiniz, kullanmayacağız. Dosyayı indirdikten sonra aşağıdaki gibi bir ekranla karşılaşıyoruz;
Yukarıdaki ekran görüntüsünde yer alan "Generate new P12 key" butonuna tıklayarak ".p12" formatında bir dosyayı bilgisayarımıza indiriyoruz ve sunucumuza upload ediyoruz.
2- Google Analytics Hesabına API için Kullanıcı Tanımlama
API için yarattığımız servis hesabımızı, Google Analytics üzerinde istatistik verilerine erişmek istediğimiz sitemize kullanıcı olarak tanımlamamız gerekiyor.
Bunun için öncelikle Google Analytics hesabımıza giriş yapıyoruz. Üst menüden "Yönetici" sayfasına geçiyoruz. Burada sol kısımdan hesabımızı seçiyoruz. Sağ kısımda yer alan "Şunun için izin ekleyin" alanına servis hesabımızın "Email address" bilgisini giriyoruz (@developer.gserviceaccount.com uzantılı olmalı). Sağındaki seçim kutusundan "Okuma ve Analiz" i seçip "Ekle" butonuna basıyoruz.
Google tarafında yapacağımız işlemler bu kadar. Şimdi Codeigniter içerisinde yapacağımız kod değişikliklerine bakalım;
1- Yukarıda bahsettiğim GAPI adlı kütüphaneyi indiriyoruz ve içindeki "gapi.class.php" adlı dosyayı Codeigniter içerisinde "application/libraries" dizinine kopyalıyoruz. Ancak Codeigniter 3.0 versiyonunda gelen bir değişiklikle library dosyalarının isimleri büyük harfle başlar. Bu sebeple dosyamızın adını "Gapi.php" olarak değiştiriyoruz.
2- Dosyamıza direk erişimi engellemek için "php" tagından hemen sonra aşağıdaki kodu ekliyoruz;
defined('BASEPATH') OR exit('No direct script access allowed');
3- Aşağıdaki satırı buluyoruz;
private $results = array();
Hemen altına aşağıdaki kodu ekliyoruz;
private $client_email = null;
private $key_file = null;
4- Daha sonra classımızın __construct() fonksiyonunu aşağıdaki ile değiştiriyoruz
public function __construct($login_params = array(), $delegate_email = null) {
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
throw new Exception('GAPI: PHP version ' . PHP_VERSION . ' is below minimum required 5.3.0.');
}
$this->client_email = $login_params['client_email'];
$this->key_file = $login_params['key_file'];
$this->auth_method = new gapiOAuth2();
$this->auth_method->fetchToken($this->client_email, $this->key_file, $delegate_email);
}
5- "application/config/" dizini içerisinde "gapi.php" adında bir dosya oluşturup aşağıdaki kodu yazarak kaydediyoruz;
defined('BASEPATH') OR exit('No direct script access allowed');
/*
|--------------------------------------------------------------------------
| Google Analytics API - Account E-Mail
|--------------------------------------------------------------------------
*/
$config['account_email'] = 'account_emailiniz@developer.gserviceaccount.com';
/*
|--------------------------------------------------------------------------
| Google Analytics API - P12 Key File
|--------------------------------------------------------------------------
*/
$config['p12_key'] = 'p12_dosya_yolunuz/Analytics-ef0175d30222.p12';
/*
|--------------------------------------------------------------------------
| Google Analytics API - Profile ID
|--------------------------------------------------------------------------
*/
$config['ga_profile_id'] = 'Analytics Verisi Çekilecek Olan Hesaba Ait Profil_ID';
Buradaki Account E-Mail, API servisini oluşturduğumuzda verilen e-mail adresidir.
p12_key değeri, p12 uzantılı dosyanızın sunucudaki yeridir.
ga_profile_id değeri ise, verilerini çekmek istediğimiz sitenin Analytics üzerindeki ID numarasıdır.
6- Ayarlamaları yaptıktan sonra sıra verilerimizi çekmeye geldi. Bunun için controller dosyamıza aşağıdaki kodları ekliyoruz;
$this->load->config('gapi');
$params = [ 'client_email' => $this->config->item('account_email'), 'key_file' => $this->config->item('p12_key') ];
$this->load->library('gapi', $params);
$this->gapi->requestReportData($this->config->item('ga_profile_id'), array('day'), array('sessions','users','pageviews','organicSearches','bounceRate'), 'day', '', date('Y-m-01'), date('Y-m-d'), 1, 500);
$data['totalSessions'] = $this->gapi->getSessions();
$data['totalUsers'] = $this->gapi->getUsers();
$data['totalPageViews'] = $this->gapi->getPageviews();
$data['totalOrganik'] = $this->gapi->getOrganicSearches();
$data['totalBounce'] = $this->gapi->getBounceRate();
Yukarıdaki kodda önce gapi kütüphanemizin ayar dosyasını sayfamıza dahil ettik. Daha sonra parametre dizimizi tanımlayıp kütüphanemizi çağırdık. Son olarak kütüphanemizde bulunan "requestReportData" methodunu kullanarak verilerimizi çektik.
Bu methodu kullanarak çekebileceğiniz verileri aşağıdaki adresten inceleyebilirsiniz;
https://developers.google.com/analytics/devguides/reporting/core/dimsmets
Merhaba, bu şekilde yaptığımızda yazdığımız tarih aralığının toplam sonuçlarını veriyor. Gün gün ayrı sonuçları dizi şeklinde nasıl alabiliriz?
Analytics API ile belirttiğimiz tarih aralığındaki verileri çekebiliyoruz. Gün gün çekmek isterseniz kendiniz bir döngü kurup içerisinde servisi çalıştırabilirsiniz.
Hızlı yanıt verdiğiniz için teşekkür ederim. Codeigniter'da getResults fonksiyonu olduğu için gapi'ninki çalışmıyordu. Gapi.php dosyasında metrics ve dimensions değişkenlerini public yaptığımda ve getResults fonksiyonun adını değiştirdiğimde artık bu fonksiyon ile kendi controllerımda döngü kullanmadan tüm günleri sıralı şekilde alabiliyorum. Paylaşımınız için teşekkürler.