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