AccessRankingGA プラグインをOAuth 2.0 対応
Google APIs で、ClientLoginによる認証のサポートを打ち切ったために、AccessRankingGA が使えなくなっているようでしたので、OAuth 2.0 で認証するようにコードを修正しました。
個人使用レベルですが、コード修正の一助となればとおもい、情報公開しました。
OAuth 認証にあたっては、PerlでGoogle AnalyticsへアクセスするならNet::Google::Analyticsが便利 - ゆーすけべー日記 で紹介されている、Net::Google::Analytics というモジュールを採用するとしました。
あらかじめ CPAN で Net::Google::Analytics をインストールしておきます。
私の場合は、サーバーのほうでは Net::Google::Analytics をインストールすることができませんでした。Github のリポジトリから(http://github.com/nwellnhof/Net-Google-Analytics)DLして、lib をプラグインの extlib フォルダにいれて使用しています。 Net::Google::Analyticsは依存モジュールとして、Class::XSAccessor (< 1.05) が必要ですので、手動によるインストールの場合は注意してください。
変更をおこなう前にブログのバックアップ(サイト全体のバックアップとテーマ・テンプレート等)をとっておけば、不測の事態にも安心です。 このプラグイン修正および、元プラグインに起因する損失については当方は責任を負わないということとさせていただきます。
動作の確認は Movable Type 6.1.1 でおこないました。
1. Google APIs Console でプロジェクトを作成
まず、プラグイン使用にあたり、Google APIs から取得する項目を示します。
- クライアントID
- クライアントシークレット
- リフレッシュトークン
Movable Type 6系で、GoogleAnalytics プラグインのGoogleへの認証を済ませてあり、ダッシュボードにサイト情報が表示できている場合は、以前に登録したプロジェクトIDでそのまま使うことができます。
まだ設定されてないか、v5.x 系のときは、Movable Type 公式の以下のドキュメントにならって作成すればいいです。
スクリーンショットが旧版のUIのほうで撮られているのですが、基本的にはフォームに入力する項目は変わりません。 わかりにくいときは、以下のページなどを参考にするといいかと思います。
作成すると、左メニューのAPIと認証 >認証情報 で作成した一覧がみられます。
その中から、クライアントID 、クライアント シークレットをメモします(実際には付箋系のアプリとかに貼付け等)。
この画面からは、リフレッシュトークンは得られないので、必要なパラメーターをつけて、 https://accounts.google.com/o/oauth2/auth にアクセスしにいくのですが、 Net::Google::Analytics では、リフレッシュトークン取得のためのツールもパッケージされているのでそれを利用します。
具体的には、ターミナルで以下のようなコードを実行するなどです。
(サーバー上にこのツールを置かなくてもローカルからの実行で適切なリフレッシュトークンを得ることができます。サーバーから実行したとき、ターミナルのプロンプトの入力でもたついていると、プロセスkillされたりするので)
$ cd /PATH/TO/cgi-bin $ ./get_acces_token.pl
実行後のターミナルに表示されるURLの後尾に以下を追加した状態でアクセスします。
&approval_prompt=force&access_type=offline
参考:
成功すると、承認のウィンドウがでて、こちらが承認したあと、リダイレクトURLのところで設定した URLに 遷移します。そのURL の code= 以下の部分をコピーして、ターミナルの先のツールのプロンプトに貼付けして enter します。
注意点ですが、 #のような記号はURLエンコード(%23)しておかないとエラーになるようです。
ツールで返ってきた、 refresh token をメモします。
うまくいかない場合は、以下を参考にするといいでしょう。
設定の為に必要な情報を得るのは以上です。
2. プラグインを OAuth 移行版に差し替える
OAuth 2.0 対応のブランチを用意しておきました。
リポジトリをプライベートに変更いたしました。スニペットは閲覧できるようにしてあります。
- https://bitbucket.org/markdiarycom/mt-plugin-accessrankingga/branch/oauth20 | mt-plugin-AccessRankingGA / oauth20 -- Bitbucket
( ダウンロードの場合、https://bitbucket.org/markdiarycom/mt-plugin-accessrankingga/downloads の Branches タブの oauth20 です)
フォルダごとそのまま以前のものと置き換えでよいかとおもいます。今のところ、静的なファイルには手を付けていません。基本として必要な箇所のみ変更したものです。
プラグインの設定(ブログ単位)のページにいき、先ほど入手した各項目を入力していきます。
入力例を示します。以上です。
あとは、 <$MTAccessRankingGA$>
ファンクションタグを設置したテンプレートをプレビューするなどします。
うまく表示できていない場合は
- Net::Google::Analytics モジュールのパスはあっているか
- 設定した ID等に入力に間違いがないか
あたりを確認してみてください。
出力結果が以前と相違ないようであれば、今まで通りのテンプレートと cron設定のまま使うことが出来ます。
制限事項としまして、現在のところ、トップページを除外して出力させるオプションに対応していません。
当方がリファラスパム対策で、サイトのトップページをレポートから除外しているためです。動作を検証できる環境が整っていないので対応を見送っています。
除外フィルターの機能をサポートしました。使い方は、設定のトップページ除外のチェックボックスにチェック、その下の除外パスリストにカンマ区切りか改行で記述すればいいかとおもいます。
Query Explorer(https://ga-dev-tools.appspot.com/query-explorer/) を試してチェックしていますが、おかしな結果がでているようならば、ご連絡いただけるとありがたいです。
参考までに、修正にあたってのメモです。
追記
使用上での注意点
Google アカウント設定の「アカウントに接続されているアプリ」から、許可されている、Google Analyticsを 「アクセス権を取り消す」により、アクセス権剥奪された場合、もう一度、リフレッシュトークン発行の操作をおこなって、設定にてアクセストークンを更新する必要があります。
2015.06.21
インデックス除外等フィルター機能をサポートしました。
追記:2
2015/08/05 リポジトリをプライベートに変更しました。ご了承ください。
2015/10/02 文中リンクのリンク切れを修正しました。
Trackbacks:1
- TrackBack URL for this entry
- https://www.markdiary.com/mt/app-pingback.cgi/99
- Listed below are links to weblogs that reference
- AccessRankingGA プラグインをOAuth 2.0 対応 from maRk lab
markdiarycom / mt-plugin-AccessRankingGA from markdiarycom / mt-plugin-AccessRankingGA
TITLE: markdiarycom / mt-plugin-AccessRankingGA URL: https://bitbucket.org/markdiarycom/mt-plugin-accessrankingga DATE: 06/17/2015 06:53:17 PM
Comments:0