logo

Thông báo

Icon
Error

Chia sẻ
Tùy chọn
Xem
Xem bài viết cuối
Offline admin  
#1 Đã gửi : 09/03/2015 lúc 12:55:02(UTC)
admin

Danh hiệu: Administration

Chức danh:

Nhóm: Administrators
Gia nhập: 23-07-2013(UTC)
Bài viết: 5,607
Man
Viet Nam
Đến từ: Vietnam

Cảm ơn: 8 lần
Được cảm ơn: 2 lần trong 2 bài viết

Truy xuất dữ liệu Google Analytics API trong Codeigniter

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

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. 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 :D ) 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:

1
2
3
4
5
6
7
8
9
10
<?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/autoload.php';
 
class Google extends Google_Client {
 function __construct($params = array()) {
 parent::__construct();
 }
}

Đoạn code khá ngắn, mục đích của nó chỉ là để load bộ thư viện kia lên thôi:D .

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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 = 'xxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com'; //Email Address
   $key_file_location = BASEPATH . '../application/third_party/google-api-php-client/xxxxxx.p12'; //key.p12
 }
}

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.

demo-ga

Sau khi tạo xong, mở project lên và chọn tab APIs, và bật tính năng Analytics API

demo-ga

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.

demo-ga

 

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ựckhởi tạo service_token để làm việc với google analytics.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$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(
),
$key,
'notasecret'
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();

 Lấy dữ liệuhiển thị ra màn hình

Thử lấy 1 vài dữ liệu như visits và pageviews thử nhé:

1
2
3
4
5
6
7
8
9
$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>";

Ở đâ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ấytrong 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:

1
https://www.google.com/analytics/web/?hl=vi&pli=1#report/visitors-overview/a42586526w88691717pXXXXXX/

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:

1
2
3
4
5
6
7
Array (
 
[ga:visits] => 31
 
[ga:pageviews] => 63
 
)

 

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é:

1
2
3
4
5
6
7
8
9
10
</pre>
<pre>$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);</pre>

 

Sau đó ở View mình sẽ sử dụng mã script đã lấy ở Google Charts.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<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ốngtruy 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>

Kết quả:

demo-ga

 

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

Truy xuất dữ liệu Google Analytics API trong Codeigniter

Truy xuất dữ liệu Google Analytics API trong Codeigniter

 Nguồn : http://sangplus.com/truy...i-trong-codeigniter.html

Ai đang xem chủ đề này?
OceanSpiders 2.0
Di chuyển  
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.

Powered by YAF.NET 2.2.3 | YAF.NET © 2003-2018, Yet Another Forum.NET
Thời gian xử lý trang này hết 5.184 giây.