Truy xuất dữ liệu Google Analytics API trong Codeigniter
Theo yêu cầu của các bạn, sau bài viết hướng dẫn truy xuất dữ liệu từ Google Analytics API trong Laravel thì tiếp theo mình sẽ hướng dẫn các bạn thực hiện với Codeigniter.
Điều đầu tiên cần chuẩn bị là bạn cần cài đặt Codeigniter. Cài đặt nó thì chắc hẳn quá dễ dàng với các bạn rồi. 😀
Cài đặt thư viện Google Api Php Client
Đối với Codeigniter, chúng ta cần cài đặt bộ thư viện tương tác Google Api Php Client.
Các bạn lưu ý chọn version 1 nhé. Bản 2.0 hiện tại không phù hợp với cách làm trong bài viết này.
Nhấn vào download zip để tải về, giải nén ra ta sẽ được thư mục google-api-php-client-master (bỏ chữ master trong tên thư mục cho bớt thừa 😀 ) và copy vào thư mục application/third_party.
Tiếp theo chúng ta sẽ tạo file google.php trong thư mục libraries của ứng dụng (mục đích là để dễ dàng load thư viện google-api-php-client lên khi cần dùng) có nội dung như sau:
[php]
<?php if (!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);
//Đường dẫn tới thư mục chứa bộ thư viện của mà bạn lưu.
require_once APPPATH . ‘third_party/google-api-php-client/src/Google/autoload.php’;
class Google extends Google_Client {
function __construct($params = array()) {
parent::__construct();
}
}
[/php]
Đoạn code khá ngắn, mục đích của nó chỉ là để load bộ thư viện kia lên thôi mà 😀 .
Tạo controller thực hiện truy xuất dữ liệu
Tiếp theo ta sẽ tạo 1 controller để gọi và sử dụng bộ thư viện này. Ở đây mình tạo controller home.php
[php]
<?php session_start();
//Đặt trên cùng của file và không có bất cứ dòng code nào trước nó nhé.
class Home extends CI_Controller {
function __construct() {
parent::__construct();
}
function index() {
$this->load->library(‘google’);
$client_id = ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’;
//Client ID
$service_account_name = ‘[email protected]’;
//Email Address
$key_file_location = BASEPATH .
‘../application/third_party/google-api-php-client/xxxxxx.p12’;
//key.p12
}
}
[/php]
Chúng ta cần phải đặt session_start() ở trên cùng của controller nhé (lưu ý là không được có dòng code nào trước nó, kẻo nó lỗi, session mà :D).
Cấu hình các tham số cần thiết
Ở đây, chúng ta cần phải cấu hình 1 chút trước khi có thể chạy được đoạn code trên. Các thông số quan trọng cần phải cấu hình gồm có: $client_id, $service_account_name, $key_file_location.
Để có được các thông số này bạn truy cập https://console.developers.google.com/project, đăng nhập bằng tài khoản quản trị của bạn và tạo project mới.
Sau khi tạo xong, mở project lên và chọn tab APIs, và bật tính năng Analytics API
Sau đó, chọn tab Credentials và ở OAuth, chọn Create new Client ID, chọn Service Account và nhấn tạo. Nó sẽ cho bạn 1 file có dạng xxxxxxxxxxxxxxxx.p12 và 2 thông số Client ID, Email Address.
Bây giờ bạn quay lại file home.php và điền vào các thông số trên. Vậy là đã xong phần cấu hình chính.
Tiếp theo chúng ta sẽ thêm đoạn code xác thực và khởi tạo service_token để làm việc với google analytics.
[php]
$client = new Google_Client();
$client->setApplicationName("ApplicationName"); //Cái này không quan trọng lắm, bạn có thể đặt tùy ý.
$analytics = new Google_Service_Analytics($client);
if (isset($_SESSION[‘service_token’])) {
$client->setAccessToken($_SESSION[‘service_token’]);
}
//Đọc nội dung từ file key và xác thực tài khoản GA
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array(
‘https://www.googleapis.com/auth/analytics’,
),
$key,
‘notasecret’
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION[‘service_token’] = $client->getAccessToken();
[/php]
Lấy dữ liệu và hiển thị ra màn hình
Thử lấy 1 vài dữ liệu như visits và pageviews thử nhé:
[php]
$profileId = "ga:xxxxx";
$startDate = ‘2015-01-01’;
$metrics = "ga:visits,ga:pageviews";
$optParams = array("dimensions" => "ga:date");
$stats = $analytics->data_ga->get($profileId, $startDate, ‘today’, $metrics, $optParams);
echo "<pre>";
print_r($stats[‘totalsForAllResults’]);
echo "<pre>";
[/php]
Ở đây có 1 thông số là $profileId chúng ta cần cấu hình. $profileId thì hơi khó khăn 1 chút để tìm thấy nó trong trang quản trị của google analytics. Bạn truy cập vào trang quản lý Google Analytics của bạn và vào trang web bạn quản lý. Lúc này đường dẫn URL sẽ có dạng:
[php]
https://www.google.com/analytics/web/?hl=vi&pli=1#report/visitors-overview/a42586526w88691717pXXXXXX/
[/php]
Trong đó, dãy số XXXXXX cuối cùng là profileID của Website bạn. Điền nó vào file home.php để hoàn tất nhé.
Tiếp theo, vẫn chưa chạy được home.php đâu, bạn cần truy cập https://www.google.com/analytics/web/#management/Accounts/ và thêm ‘service_account_name’ vào email quản trị.
Vậy là đã xong phần khó khăn rồi đó. Bây giờ nếu bạn chạy controller home.php lên thì kết quả nhận được sẽ có dạng:
[php]
Array (
[ga:visits] => 31
[ga:pageviews] => 63
)
[/php]
Ngoài các thông số về visits và pageviews, bạn có thể lấy các thông số khác như: ga:sessions, ga:percentNewVisits, ga:entranceBounceRate, ga:exitRate, ga:pageviewsPerVisit…
Truy cập https://ga-dev-tools.appspot.com/explorer/?csw=1 để tìm hiểu thêm về các thông số này.
Hiển thị dạng biểu đồ với Google Charts
Tiếp theo mình sẽ hướng dẫn các bạn hiển thị dữ liệu lên dạng biểu đồ bằng cách sử dụng Google Charts. Để hiển thị dữ liệu lên biểu đồ thì ta cần lấy nhiều dữ liệu, ở đây mình sẽ demo hiển thị lượng truy cập theo giờ.
Để hiện thị được dữ liệu theo giờ thì chúng ta sẽ thay đổi 1 chút code bên trên nhé:
[php]
$metrics = "ga:visits,ga:pageviews";
//Lấy giá trị theo giờ
$optParams = array("dimensions" => "ga:hour");
//Ở đây mình chỉ muốn hiển thị dữ liệu ngày hôm nay thôi, nên mình sẽ đặt
//thuộc tính là today -> today nhé.
$stats = $analytics->data_ga->get($profileId, ‘today’, ‘today’, $metrics, $optParams);
//Vì lấy nhiều dữ liệu nên mình sẽ lấy mảng rows trong kết quả trả về.
$data[‘stats’] = $stats[‘rows’];
return $this->load->view(‘analytics’, $data);
[/php]
Sau đó ở View mình sẽ sử dụng mã script đã lấy ở Google Charts.
[php]
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
[‘Thời gian’, ‘Khách’, ‘Lượt xem trang’],
<?php foreach($stats as $key => $value) { ?>
[‘<?php echo $key%4==0?$key:”;?>’, <?php echo $value[1].’,’.$value[2]; ?>],
<?php } ?>
]);
var options = {
title: ‘Thống kê truy cập’,
hAxis: {title: ‘Thời gian’, titleTextStyle: {color: ‘#333’}},
vAxis: {minValue: 0}
};
var chart = new google.visualization.AreaChart(document.getElementById(‘chart_div’));
chart.draw(data, options);
}
</script>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
[/php]
Kết quả:
Vậy là đã xong, như các bạn thấy thì cách làm cũng không khác khi làm với Laravel mà bài viết trước mình đã trình bày. Cách làm thì như nhau thôi, chỉ khác cú pháp chút ít. Lấy dữ liệu mới khó khăn, chứ còn hiển thị thì không mấy phức tạp, các bạn có thể kiếm các dạng biểu đồ khác để làm cho ứng dụng của chúng ta trở nên đẹp hơn. Vì đây chỉ là demo nhỏ nên mình chỉ hiển thị lên ở mức đơn giản. Nó có thể trở nên đẹp hơn như thế này.
Thông thường thì sẽ cần 1 khoảng thời gian để google cập nhật nếu bị lỗi email add vào tài khoản GA không có quyền truy cập thì bạn hãy chờ đợi trong khoảng vài giờ tới 24h để google nó cập nhật nhé.
Cuối cùng, nếu bạn gặp khó khăn trong quá trình thực hiện, hãy comment bên dưới để mình giúp đỡ nhé, trong quá trình viết bài, mình code trực tiếp trong khung soạn thảo nên nếu có sai sót thì các bạn báo lại để mình chỉnh sửa nhé, cám ơn các bạn đã quan tâm đến blog mình. 😀
- Địa chỉ: Hồ Chí Minh
- Facebook: Sang Nguyen