GAE上でTiwtter4jを利用する OAuth認証(2)

Application Management でコールバックを設定する。

RequestToken から AccessToken を取得するさい、正常ルーチンは問題ないが認証ページでユーザがキャンセルした場合に例外が発生する。

GAEのログを確認したところ、

GET /CallBack?denied=XXXXXXXXXXXXX
java.lang.NullPointerException
	at java.net.URLEncoder.encode(URLEncoder.java:205)

となっていた。
Tiwtter4jのソースには、リクエストパラメータの oauth_tokenoauth_verifier に関する処理しかない。
そのため、そのパラメータが無い場合は、エンコードエラーで例外が発生してしまう。
今まで、SandBoxをラップするAPIを利用してきた中で、NullPointerException を簡単に吐き出すなんてと経験上まれだったので、何かしら前提条件が必要だと思いソースのすみからすみまで目を通すが、denied の記述が無い。
しかたが無いので、以下のように処理をする。

if ( req.getParameter("denied") != null ) {
         // キャンセルされた
     ;
} else {
        // RequestTokenからAccessTokenを取得
        accessToken = twitter.getOAuthAccessToken(requestToken, verifier);
}

はまらないようにするためには、経験は捨てろソースに書かれていることがすべてだ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>