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」を追加します。

615_01.png

615_02.png


[APIと認証] - [認証情報]を選択。
「新しいクライアントIDを作成」をクリックし、「サービス アカウント」を選択します。

615_03.png

615_04.png

615_05.png


ここで自動的に.jsonファイルがダウンロードされますが、このファイルは使いません。
「新しいP12キーを生成」をクリックし、.p12という拡張子のファイルを取得しておきます。

615_06.png

この拡張子が.p12のファイルをプログラムで読み込んで使用します。


また、ここで表示される「サービスアカウント」の「メールアドレス」を控えておきます。
@developer.gserviceaccount.comで終了しているアドレスです。


これでGoogle Developers Consoleでの作業は終了です。





Googleアナリティクスの設定



次はGoogleアナリティクスの設定を行います。

[アナリティクス設定] - [プロパティ] - [ユーザー管理]を選択。

615_07.png


Google Developers Consoleで表示されていた「サービスアカウント」の
「メールアドレス([email protected])」を追加します。

権限は「表示と分析」でOKです。

615_08.png


このユーザーを追加していないと、プログラムからデータの取得が行えません。
これでGoogleアナリティクスの設定は完了です。







ライブラリのインストール



easy_installでgoogle-api-python-clientをインストール。


# easy_install -U google-api-python-client




プログラムはこんな感じになります。


  1. # -*- coding:utf-8 -*-
  2. import oauth2client
  3. import apiclient
  4. import httplib2
  5. scope = ['https://www.googleapis.com/auth/analytics.readonly']
  6. # サービスアカウントのメールアドレス
  7. service_account_email = '<デベロッパーコンソールに表示されたアドレス>@developer.gserviceaccount.com'
  8. # ダウンロードしたキーファイル
  9. key_file = 'Analytics.p12'
  10. # キーファイルロード
  11. with open(key_file, 'rb') as f:
  12.     key = f.read()
  13. # OAuth認証準備
  14. credentials = oauth2client.client.SignedJwtAssertionCredentials(service_account_email, key, scope=scope)
  15. http = credentials.authorize(httplib2.Http())
  16. # コネクション作成
  17. service = apiclient.discovery.build('analytics', 'v3', http=http)
  18. # データ取得
  19. results = service.data().ga().get(
  20.     ids='ga:19407786', # GoogleアナリティクスのビューID
  21.     start_date='2015-06-01',
  22.     end_date='2015-07-01',
  23.     metrics='ga:pageviews,ga:sessions,ga:users,ga:pageviewsPerSession').execute()
  24. row = results.get('rows')[0]
  25. # PV数
  26. print row[0]
  27. # 訪問数(セッション)
  28. print row[1]
  29. # UU数(ユニークユーザ)
  30. print row[2]
  31. # 平均訪問数(ページ/セッション)
  32. 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


関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ