ClientLoginのサポート終了
AccessRankingGAをインストールしようとして躓いて調べて分かったのですが、GoogleはClientLoginのサポートを2014年8月に終了したのでその機能に頼っている本プラグインは動作しなくなりました。
具体的な症状
再現手順
インストールして利用しようとすると、以下のように403 ForbiddenエラーがGoogleから返ってきます。この症状は<$mt:AccessRankingGA$>を含むページ、たとえばインデックステンプレートの日、週、月で集計するスクリプトを公開しようとすると発生します。
エラー画面
プログラムからのアクセスを許可する方法(OAuth2で有効)
ためしにGoogleのデベロッパーページを参考に、AccessRankingGAのプラグインプログラム内でやっている通りにcurlでログインしようとすると、以下のようになります(青字の部分は自分のアカウント情報を使います)。
$ curl -k --location https://www.google.com/accounts/ClientLogin --data "accountType=GOOGLE&Email=example@gmail.com&Passwd=example&service=analytics&source=companyName-applicationName-versionID" --header "Content-Type:application/x-www-form-urlencoded"
Error=BadAuthentication
Url=https://www.google.com/accounts/ContinueSignIn?...
Info=WebLoginRequired
出力中の"Url=..."で示されたURLにアクセスすると、Account settingsのページに行くので、"Recent activity"->"Devices"に行くか、直接Devices & Activityのページに行くと、上記アクセスがブロックされていることが分かります。
このアクセスを許可するため、"YES THAT WAS ME"をクリックし、
続く確認画面で"OK"をクリックしても、この設定画面上ではアクセス許可されているように見えますが、ブロックは解除されません。
OAuth2でないとアクセスできません
上記の理由がGoogleがClientLoginのサポートを2014年8月に終了したことです。現在、プログラム的にGoogleのAPIにアクセスするためには、プログラムがOAuth2に対応している必要があります。
たとえば、MovableTypeにはデフォルトで「設定」→「Webサービス」でGoogle Analyticsとの連携機能が備わっています。cpanでCrypt::SSLeayをインストールすれば動作します(これがTinyCore Linuxだとまた一苦労でしたが)。この機能はOAuth2を利用しています。
この連携機能を生かしてAccessRankingGAをOAuth2対応にしたいですが、ちょっと面倒です。時間が取れたらやってみようと思います。
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!