สำหรับบทเรียนรู้นี้เรามาทดลองการแสดงข้อมูลจาก Google Analytics มาแสดงใน Web Application ของเราผ่าน API ของ Google ซึ่งมีขั้นตอนต่อไปนี้
ติดตั้ง Google API Client
ทำการติดตั้ง Google API Client กันก่อน โดย copy คำสั่งไปวางใน composer.json
"google/apiclient": "^2.0",
จากนั้นก็สั่ง
composer update
ทำการสร้าง Google API Project ก่อนนะ
โดยเข้าที่ URL
https://console.developers.google.com/apis/dashboard
จากนั้นก็กดสร้างโครงการให้เรียบร้อย
จะได้โครงการหน้าตาลักษณะดังนี้
เป็นอันเสร็จเรียบร้อยในขั้นตอนนี้ ต่อไปเรามาเปิดการใช้งาน API กัน ซึ่งการเปิด API นั้นก็อาจมีค่าใช้จ่ายเพิ่มเติมนะครับ
การเปิดใช้ API
API ที่จะใช้งานในขั้นตอนนี้จะมี 2 ตัว ไปดูกันเลย
ตัวแรกคือ Analytics API อยู่มุมขวาล่าง
คลิกเข้าไปแล้วคลิกลิ้ง เปิด ก็เป็นอันใช้ได้ล่ะครับ
ตัวที่สองมีชื่อว่า Google Analytics Reporting API หาไม่เจอใช่ไหม ให้ค้นหาเอานะครับ
และทำการเปิดใช้งานเหมือนตัวแรกนะ เป็นอันเสร็จเรียบร้อย
สร้าง KEY ต่างๆ
คลิกที่เมนูซ้ายมือ ข้อมูลรับรอง เพื่อจัดการ Key ต่างๆ (อันนี้ห้ามบอกใครนะ)
ทำการสร้าง Key 2 ส่วนคือ คีย์ API และ รหัสไคลเอ็นต์ OAuth 2.0 จะได้ดังนี้
ในส่วน OAuth 2.0 ก็ทำการระบุ URL ให้เรียบร้อยตามคำอธิบายเลย
เป็นอันเสร็จเรียบร้อยในขั้นตอนการสร้าง Key
เขียนโปรแกรม
มาเขียนโปรแกรมในการเชื่อมต่อ โดยในที่นี้จะให้เชื่อมต่อผ่าน OAuth จาก Google นะครับ ซึ่งจะต้องทำการ Login ก่อนจึงจะสามารถเข้าใช้งานได้โดยทำการสร้าง Controller ดังนี้
frontend/controllers/GoogleController และสร้าง Action Analytic ดังนี้
<?php
namespace frontend\controllers;
use Exception;
use Google_Client;
use Google_Service_AnalyticsReporting;
use Google_Service_AnalyticsReporting_DateRange;
use Google_Service_AnalyticsReporting_GetReportsRequest;
use Google_Service_AnalyticsReporting_Metric;
use Google_Service_AnalyticsReporting_ReportRequest;
use Yii;
use yii\web\Controller;
use Google_Service_Analytics;
class GoogleController extends Controller
{
public function actionAnalytic()
{
$client = new Google_Client();
$client->setApplicationName('Programmer Thailand');
$client->setDeveloperKey('YOUR_KEY');
$client->setClientId('YOUR_CLIENT_ID');
$client->setClientSecret('YOUR_CLIENT_SCRET');
$client->setRedirectUri('https://www.programmerthailand.com/google/analytic');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
$service = new Google_Service_Analytics($client);
Yii::$app->session->open();
if (isset($_GET['logout'])) {
unset($_SESSION['token']);
}
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'https://www.programmerthailand.com/google/analytic';
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) {
$_SESSION['token'] = $client->getAccessToken();
$optParams = ['dimensions' => 'ga:visitorType'];
try {
######## AnalyticsReporting #########
$analytics = new Google_Service_AnalyticsReporting($client);
// Call the Analytics Reporting API V4.
$response = $this->getReport($analytics);
// Print the response.
$this->printResults($response);
######## AnalyticsReporting #########
####### Real-time Analytic ########
$results = $service->data_realtime->get(
'ga:YOUR_VIEW_ID',
'ga:activeVisitors',
$optParams);
// Success.
// Do whatever you need with the results.
//var_dump($results);
$total = 0;
if ($results->getRows() > 0) {
foreach ($results->getRows() as $row) {
$total += $row[1];
}
}
echo $total;
###### Real-time Analytic ########
} catch (Exception $e) {
// Handle API service exceptions.
print_r('ERROR: ' . $e->getMessage());
}
} else {
$authUrl = $client->createAuthUrl();
header('Location: ' . $authUrl);
}
//return $this->render('realtime-analytic');
}
public function getReport($analytics)
{
// Replace with your view ID, for example XXXX.
$VIEW_ID = "YOUR_VIEW_ID";
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("7daysAgo"); //อยากรู้ 7 วันที่ผ่านมา
$dateRange->setEndDate("today");
// Create the Metrics object.
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression("ga:sessions");
$sessions->setAlias("sessions");
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);
$request->setMetrics(array($sessions));
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array($request));
return $analytics->reports->batchGet($body);
}
public function printResults($reports) {
for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
$report = $reports[ $reportIndex ];
$header = $report->getColumnHeader();
$dimensionHeaders = $header->getDimensions();
$metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
$rows = $report->getData()->getRows();
for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
$row = $rows[ $rowIndex ];
$dimensions = $row->getDimensions();
$metrics = $row->getMetrics();
for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
}
for ($j = 0; $j < count($metrics); $j++) {
$values = $metrics[$j]->getValues();
for ($k = 0; $k < count($values); $k++) {
$entry = $metricHeaders[$k];
print($entry->getName() . ": " . $values[$k] . "\n");
}
}
}
}
}
}
VIEW_ID จะเอามาจากไหนล่ะ ก็เอามาจาก Google Analytics เรานันไง
เมื่อเปิด URL Google จะให้ Login เพื่อเปิดร้องขอการเข้าถึงข้อมูลดังนี้
เมื่อกดยอมรับ จะปรากฏข้อมูลดังนี้
sessions: 9275 20
อุ๊ตะ เขียนโปรแกรมตั้งยาวเห็นแค่เนี๊ย 555
9275 คือจำนวน Session หรือจำนวนคนเข้าเว็บเรา 7 วันที่ผ่านมา ส่วน 20 คือจำนวนที่กำลังออนไลน์ นั่นเอง
หากมีการ ERROR หรือ SESSION หมดอายุแล้วก็เรียก URL yourdomain.com/google/analytic/?logout=true เพื่อเชื่อมต่อใหม่นะ
สรุป ตัวอย่างนี้เป็นการเชื่อมต่อ Google API ด้วย Yii Framework 2 ซึ่งเป็นเพียงแนวทางหนึ่งเท่านั้น เพื่อนๆสามารถดูรายละเอียดเพิ่มเติมได้ที่
https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/web-php
https://developers.google.com/analytics/devguides/reporting/realtime/v3/#next_steps
ความคิดเห็น