Python OAuth2認証でGoogleアナリティクスの情報を取得する
以前、gdata-pythonを使用して、Google アナリティクスの情報を取得してみました。Google アナリティクスの情報をPythonで取得する(gdata-python)
Googleの認証ポリシーが強化されたようで、
現在では上記の方法でデータ取得が行えなくなっています。
OAuth2認証でデータ取得を行う方法を調べてみました。
こちらを参考にさせていただきました。
Python で Google Analytics API を使うためにやったこと
Hello Analytics API: Python quickstart for service accounts
なお、実行はDebian 7で行っています。
p12キーファイルの作成
まず、認証に使用するキーファイルを作成する必要があります。
Google Developers Consoleにログイン。
適当にプロジェクトを作成します。
https://console.developers.google.com
[APIと認証] - [API]を選択。
「Analytics API」を追加します。
[APIと認証] - [認証情報]を選択。
「新しいクライアントIDを作成」をクリックし、「サービス アカウント」を選択します。
ここで自動的に.jsonファイルがダウンロードされますが、このファイルは使いません。
「新しいP12キーを生成」をクリックし、.p12という拡張子のファイルを取得しておきます。
この拡張子が.p12のファイルをプログラムで読み込んで使用します。
また、ここで表示される「サービスアカウント」の「メールアドレス」を控えておきます。
@developer.gserviceaccount.comで終了しているアドレスです。
これでGoogle Developers Consoleでの作業は終了です。
Googleアナリティクスの設定
次はGoogleアナリティクスの設定を行います。
[アナリティクス設定] - [プロパティ] - [ユーザー管理]を選択。
Google Developers Consoleで表示されていた「サービスアカウント」の
「メールアドレス([email protected])」を追加します。
権限は「表示と分析」でOKです。
このユーザーを追加していないと、プログラムからデータの取得が行えません。
これでGoogleアナリティクスの設定は完了です。
ライブラリのインストール
easy_installでgoogle-api-python-clientをインストール。
# easy_install -U google-api-python-client
プログラムはこんな感じになります。
- # -*- coding:utf-8 -*-
- import oauth2client
- import apiclient
- import httplib2
- scope = ['https://www.googleapis.com/auth/analytics.readonly']
- # サービスアカウントのメールアドレス
- service_account_email = '<デベロッパーコンソールに表示されたアドレス>@developer.gserviceaccount.com'
- # ダウンロードしたキーファイル
- key_file = 'Analytics.p12'
- # キーファイルロード
- with open(key_file, 'rb') as f:
- key = f.read()
- # OAuth認証準備
- credentials = oauth2client.client.SignedJwtAssertionCredentials(service_account_email, key, scope=scope)
- http = credentials.authorize(httplib2.Http())
- # コネクション作成
- service = apiclient.discovery.build('analytics', 'v3', http=http)
- # データ取得
- results = service.data().ga().get(
- ids='ga:19407786', # GoogleアナリティクスのビューID
- start_date='2015-06-01',
- end_date='2015-07-01',
- metrics='ga:pageviews,ga:sessions,ga:users,ga:pageviewsPerSession').execute()
- row = results.get('rows')[0]
- # PV数
- print row[0]
- # 訪問数(セッション)
- print row[1]
- # UU数(ユニークユーザ)
- print row[2]
- # 平均訪問数(ページ/セッション)
- print row[3]
GoogleアナリティクスのビューIDについては、以前の記事が詳しいです。
Google アナリティクスの情報をPythonで取得する(gdata-python)
これでデータが取得出来ました。
ハマったポイント
oauth2client.client.CryptoUnavailableError: No crypto library available
このエラーは、open-sslのライブラリ不足でした。
python-opensslをインストールしたらOK。
# apt-get install python-openssl
OpenSSL.crypto.Error: [('PEM routines', 'PEM_read_bio', 'no start line')]
これは間違えてjsonファイルを読み込んだ時に発生しました
ちゃんとp12ファイルを読み込めばOK。
oauth2client.client.AccessTokenRefreshError: invalid_grant
これは認証に使用するメールアドレス間違いでした。
デベロッパーツールで表示されたアドレスを使用すればOK。
【参考URL】
Python で Google Analytics API を使うためにやったこと
Hello Analytics API: Python quickstart for service accounts
- 関連記事
-
- FreBSD 10.1 + Nginx + php-fpmな環境を構築する
- ソースコード検索エンジン「milkode」をFreeBSD 10.1にインストールする
- Python OAuth2認証でGoogleアナリティクスの情報を取得する
- FreeBSD 10.1のNFS共有にWindowsから接続する
- Debian 7(Wheezy)のNFS共有にWindowsから接続する
コメント