CakePHPでGoogleAnalyticsAPIを使う
開発環境:CakePHP2.5.1
CakePHPでGoogleAnalyticsを使う方法について見ていきましょう。
Google側の設定
まずはGoogle側の設定を行っていきます。
Google Developers Consoleでプロジェクトを作成します。
https://console.developers.google.com/project
作成したプロジェクト内の「APIと認証」>「API」内にある「Analytics API」を有効にします。
そして、「APIと認証」>「認証情報」でクライアントIDを作成します。
今回はブラウザベースで利用するので「ウェブ アプリケーション」を選択し、「承認済みの JavaScript 生成元」に表示させるURLを指定します。
その際、「承認済みのリダイレクト URI」は自動で変更されていきますが、認証後のURIを指定したい時は手動で変更します。
入力が完了したら、「クライアントIDを作成」をクリックすると、IDが作成されます。
続いて、「APIと認証」>「同意画面」内の「メールアドレス」と「サービス名」を設定します。
GoogleAnalyticsに登録する
GoogleAnalytics側の設定です。
https://www.google.com/analytics/web/
管理画面で、データを取得したいサイトの「アナリティクス設定」>「ビュー」>「ユーザー管理」を開きます。
そのページ内の「権限を付与するユーザー」にGoogle Developers Consoleで作成された「メールアドレス」を登録します。
権限はデフォルトの「表示と分析」、「このユーザーにメールで通知」はチェックなしです。
Google APIs Client Library for PHPをgit clone
まず最初はGithub上に公開されているソースをgit cloneします。
https://github.com/google/google-api-php-client
リネームして設置
git cloneしたファイルを google-api-php-client とリネームして app/Vendor 配下に設置します。
コントローラー側の設定
続いて、コントローラー側にコードを書いていきます。
<?php
class AnalyticsController extends AppController {
public $components = array('Session');
public function index() {
// パスが通っていなければ設定
$path = '/path/to/cakephp/app/Vendor/google-api-php-client/src';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
App::import('Vendor', 'Google_Client', array('file' => 'google-api-php-client/src/Google/Client.php'));
App::import('Vendor', 'Google_Service_Analytics', array('file' => 'google-api-php-client/src/Google/Service/Analytics.php'));
// Google Developers Consoleで作成されたクライアントID
define('CLIENT_ID', 'xxxxxxxx.apps.googleusercontent.com');
// Google Developers Consoleで作成されたクライアントシークレット
define('CLIENT_SECRET', 'xxxxxx');
// Google Developers Consoleで作成されたリダイレクトURI
define('REDIRECT_URI', 'http://' . $_SERVER['HTTP_HOST'] . '/analytics');
$client = new Google_Client();
$client->setClientId(CLIENT_ID);
$client->setClientSecret(CLIENT_SECRET);
$client->setRedirectUri(REDIRECT_URI);
$client->addScope('https://www.googleapis.com/auth/analytics.readonly');
$analytics = new Google_Service_Analytics($client);
// 認証後codeを受け取ったらセッション保存
if (isset($this->request->query['code'])) {
$client->authenticate($this->request->query['code']);
$this->Session->write('token', $client->getAccessToken());
$this->redirect('http://' . $_SERVER['HTTP_HOST'] . '/analytics');
}
if ($this->Session->check('token')) {
$client->setAccessToken($this->Session->read('token'));
}
if ($client->getAccessToken()) {
$start_date = date('Y-m-d', strtotime('- 10 day'));
$end_date = date('Y-m-d');
// GoogleAnalyticsの「アナリティクス設定」>「ビュー」>「ビュー設定」の「ビューID」
$view = 'xxxxxxxxx';
// データ取得
$data = array();
$dimensions = 'ga:date';
$metrics = 'ga:visits';
$sort = 'ga:date';
$optParams = array('dimensions' => $dimensions, 'sort' => $sort);
$results = $analytics->data_ga->get('ga:' . $view, $start_date, $end_date, $metrics, $optParams);
if (isset($results['rows']) && !empty($results['rows'])) {
$data['Sample']['date'] = $results['rows'][0][0];
$data['Sample']['visits'] = $results['rows'][0][1];
}
pr($data);
} else {
$auth_url = $client->createAuthUrl();
echo '<a href="'.$auth_url.'">認証</a>';
}
exit;
}
動作確認
設定したページを呼び出すと、「認証」のリンクが表示されます。
それをクリックすると、Googleの認証ページに移り、認証をすると自身のページに戻ってきて結果を返してくれます。
エラーが返される時は
GoogleAnalyticsAPIからエラーが返ってくる場合は、エラーコードを確認の上、下記のページを参照にしてください。
https://developers.google.com/analytics/devguides/reporting/realtime/v3/errors?hl=ja
