2013年 9月 27

エラーredirect_uri_mismatch

refresh_access_tokenの取得

Google AnalyticsのAPIを活用してごにょごにょしたくてPerlでGoogle AnalyticsへアクセスするならNet::Google::Analyticsが便利 – ゆーすけべー日記を参考に試していたのだけれど、refresh_access_tokenが取得できない。

use Net::Google::Analytics::OAuth2;

my $oauth = Net::Google::Analytics::OAuth2->new(
    client_id     => 'your_client_id',
    client_secret => 'your_client_secret',
);

$oauth->interactive;

refresh_access_tokenを取得するのに上記のようなコードを実行する。

$ ./analytics.pl 
Please visit the following URL, grant access to this application, and enter
the code you will be shown:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=your_client_id&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics.readonly

Enter code: 

実行すると表示されるURLにアクセスして入手できるコードを入力し

エラー内容はこんなの

エラーredirect_uri_mismatch

The redirect URI in the request: urn:ietf:wg:oauth:2.0:oob did not match a registered redirect URI

このエラーはリダイレクトするURIが正しく設定されていないため表示されるので引数を足してあげるとうまくいく。

my $analytics = Net::Google::Analytics->new;
my $oauth = Net::Google::Analytics::OAuth2->new(
        client_id => 'your_client_id',
        client_secret => 'your_client_secret',
        redirect_uri => 'http://localhost/oauth2callback',
);
$oauth->interactive;

らしいのだけど、まだエラーが出る。

解決方法

Google Cloud Consoleへ行ってAPIの設定をする

https://cloud.google.com/console#/projectへ行き、設定する。

特に重要そうな項目は

  • 「APIと認証 > 登録済みアプリ > OAuth 2.0 クライアントID」の項目中の「リダイレクトURI」を設定する
  • 「APIと認証 > 登録済みアプリ > 同意画面 の設定

ここに漏れがあるとエラーになります。また、ここで設定するリダイレクトURIとリクエストするredirect_uriが一致しないとエラーが出ます。

Refresh tokenが表示されない対処

Net::Google::Analytics::OAuth2 ’3.01′ では approval_prompt、access_type のパラメータは、考慮されていないようなので refresh_token の取得スクリプトに表示されたものに approval_prompt=force&access_type=offline を追記してアクセスし

という事なので、先程のURLに approval_prompt=force&access_type=offline を足してアクセスすればおk.

参考

More from my site

  • Net::Google::Analytics プロファイルIDの設定Net::Google::Analytics プロファイルIDの設定 Net::Google::Analytics - Simple interface to the Google Analytics Core Reporting API - metacpan.org プロファイルIDの設定 # Insert your numeric Analytics profile ID here. You can find it under # […]
  • [Perl] DBIx::SkinnyでGROUP BY句を使うには[Perl] DBIx::SkinnyでGROUP BY句を使うには ※何故か記載が全体的にORDER BY句になっていたので修正... DBIx::SkinnyでGROUP BY句を使う DBIx::SkinnyでGROUP […]
  • perl メール送信にテンプレートを使う Email::MIME::MobileJP::Templateperl メール送信にテンプレートを使う Email::MIME::MobileJP::Template id:tokuhirom氏作の Email::MIME::MobileJP::Template を発見したので使ってみる。 PODにあるコードは動作しないので注意。renderメソッドのAPIが変わったのかな?ソースを見ると引数の最初に送り先のメールアドレスを指定しないとダメみたい。 それと、Email::MIME::MobileJP […]
  • perl の配列処理で 標準モジュール List::Util を使う理由perl の配列処理で 標準モジュール List::Util を使う理由 以前に配列をシャッフルの記事( http://perl.no-tubo.net/2010/01/08/pelrで配列をシャッフル/ )を書いたのだけれど、その時にコメントで List::Util を使いましょうよ、と頂いた。 そういうものもあるのか、と思っていたのだけれど理由があったので軽く調べてみた。 perl […]
  • DBIx::Customで where を設定する時の注意点DBIx::Customで where を設定する時の注意点 DBIx::Custom - search.cpan.org DBIx-Custom-0.1705 DBIx::Custom select メソッドの whereの項目を見ると様々な指定方法が出来ることが分かる。 注意する点はStringを渡す時。 where => "url = […]
  • MAMPな環境のmacにDBD::mysqlをインストールMAMPな環境のmacにDBD::mysqlをインストール OSX El Capitan(10.11.5) MAMPのバージョン 3.0.7.3 ※1 MySQLのバージョン 5.5.38 MAMPだとWarning (mostly harmless): No library found for […]

Filed under: perl,perlモジュール

Trackback Uri



コメントする