For Want Of A Better Word

【サクッと始める】PHPでGoogle Analytics API(WEBアプリケーション)

      2015/04/19

注意

①本記事で使っているGoogleAPI用PHPライブラリ「google-api-php-client」はバージョン0.6.6です。

GitHubにある最新の物は動かないようです。

古いライブラリ(0.6.6)は下記リンクからダウンロードできます。

Downloads – google-api-php-client – Google APIs Client Library for PHP – Google Project Hosting

 

ここから本題

PHPでアナリティクスAPIを使うチャレンジ。今までチャンレンジしては諦めるを繰り返していたけど。ちゃんとやった。

本当にやりたいのはバッチだけど、とりあえずチュートリアルがWEBアプリケーションなので、そっちから。

※バッチなどでAPIにアクセスするパターンは下記リンクからどうぞ。

【サクッと始める】PHPでGoogle Analytics API【バッチ|Google認証画面を経由しないで認証】 – For Want Of A Better Word

事前準備

①下記からクライアントライブラリの取得し、サーバーに配置。
②取得したいAnalyticsのプロファイル(ビューID)をメモ。

下記ページの「In Google Analytics under Admin > View (Profile) > View (Profile) Settings 」を参考。

③Google Analytics APIをOnにする。

方法は下記参考。(他にもあるけど。割愛)

  • 「Google Cloud Console」にアクセスする
  • プロジェクトを選択。デフォルトでは「API Project」があるのかな。
  • サイドメニュー > APIs & auth をクリック。
  • APIsの一覧が出るので、その中に「Analytics API」があるはず。探して右のスイッチをONにすればOK.
④該当のAnalyticsにアクセスできるユーザーで、クライアントIDとかとかを取得する。

下記の項目を知っておく必要がある。

  • (1)アプリケーション名
  • (2)ClientID
  • (3)ClientSecret
  • (4)RedirectURL
  • (5)API Key ※チュートリアルによるとAPIキーが必要と言われているが、データとるだけならそんな事はなかったぜ。

下記手順で確認する。

  • 「Google Cloud Console」にアクセスする
  • サイドメニュー > APIs & auth > Registerd apps を選択
  • 画面上のRegister Appsボタンをクリック。
  • 入力フォームが出るので、適当な名前(後で使うので忘れないような)と、Web Applicationを選択。
  • 「Register」ボタンを押して登録完了。
  • そうすると今のアプリケーションの情報画面が開くのでその中で「OAuth 2.0 Client ID」をクリックすると、各情報が表示されます。
    • (補足1)「 RedirectURI」は自分が認証後表示したいURL。HelloAnalyticsApi.phpをもう一回表示すればよいので、今回は「http://サーバー名/パス/HelloAnalyticsApi.php」という感じ。
    • (補足2)サーバ名はIPアドレスだとダメ。そんなサーバー持ってないという場合は、hostsに設定しましょう。

#【メモ】

APIキーはとりあえず無くても動いたので、正確な所は不明ですが、

「OAuth 2.0 Client ID」セクションにはないです。

・「Server Key」「Browser Key」のセクションの「Api Key」であるという説と

APIアクセスページのAPI Access>simple Accessのキーである

というのがみつかりました。 真偽はよく分かりません

(注意)
  • このままいくと。「invalid_client no application name 」というエラーが発生します。
  • Google Cloud Consoleの「Consent screen」ページで必須情報を設定しましょう。

オッケー、ここまで来たらもうオッケー!!!

サーバーにHelloAnalyticsApi.phpを作って。

フォルダ/

|- HelloAnalyticsApi.php

|- google-api-php-client (クライアントを解凍したやつ)

という感じで配置して。。

んで、チュートリアルで作成するHelloAnalyticsApi.phpを自分に都合よいように手を入れたのが下記。

コメントで★つけている所に、事前準備したやつをぶち込んで下さい。

んでWEBからアクセスすると、「Connect me」と表示されるので、クリック>Analyticsにアクセス認証画面に遷移>OKOKとしてやると結果のdumpが出ます。

リクエストの中身を編集したい場合は、getResultsの中身をいじって下さい。

動かなかったらごめんなさい。

 

以下自分チュートリアルやりながら、ちょっと嵌った所だけメモしておきます。

  • (1)「エラーinvalid_client no application name」は単純に(1)のアプリケーション名(引いては見ているプロジェクトが違うとか)が間違っている場合と「「Consent screen」」を設定してないの大きく2通りが考えられます。ひとつずつ確認してください。
  • (2)上記コードはよいのですが、チュートリアル通りやっていると下記コードがエラーになります。

クラス名が変わっているためです。下記のように直しましょう。

    • (3)自分のプロファイルにデータがある期間を指定しましょう。0件というか、空で結果が返ってきて混乱しました。

オーバー

WEBの認証画面を経由しない、バッチなどでプログラムをするパターンは次回、こちらへ

 - google, googleanalytics, php

  関連記事

【メモ】simple_html_parserの使い方リンク

[インストール~DOMオブジェクトの取得] http://so-zou.jp/w …

【Googleトレンド】【Casperjs】急上昇中キーワードをスクレイピングで取得 – (4) Casper動くもGoogleトレンドのバグ?にはまる

casperjsで値を取るため 念のためもう一回埋め込み用のタグからURLを確認 …

【PHP】【Slim】DBの利用は自力で頑張る!

公式の説明とか、サイトを眺めましたが特別O/Rマッパーのような機能は無く。 自分 …

メモメモ mod_pagespeedのキャッシュクリア

http://d.hatena.ne.jp/puchiban/20121223/ …

【php】strtotimeで日付計算する場合の基準日の指定のくせ「A non well formed numeric value encountered in 」

またちょっと嵌った。。。 strtotime() 書式化された文字列からunix …