2011年2月4日金曜日

twitterのOAuthでの注意点

OpenIDやOAuthをGoogleAppEngine上で利用するには幾つも設定方法があるようだ。しかし今回は、設定方法ではなくtwitterのOAuthを利用する時の注意点を書きたい。

OpenIDとOAuthは似た技術であるが、OAuthはサイトのAPIアクセスの認可を行うための仕様である。

参考:@IT APIアクセス権を委譲するプロトコル、OAuthを知る

twitterのOAuthを利用するときは、twitter developersのサイトで必要情報を記入登録して、Consumer key 及び Consumer secret を取得する必要がある。

twitter developersのアプリケーション登録では、ほとんどの項目を適当に入力すれば登録可能だ。登録してキーが発行されてからでも内容の変更は可能である。ただGoogleAppEngineから利用するときは、アプリケーションの種類を「ブラウザアプリケーション」にしておく必要がある。

twitter developers アプリケーションの登録申請

New Twitter Application.png

Kayフレームワークの kay.ext.gaema モジュールを利用すれば、簡単な設定で twitter OAuth を利用できる。gaemaについては別記事に譲るとして、twitter OAuth で発生したエラーについて説明する。



twitter OAuthを利用したアプリケーションへのアクセスで、次のエラーが出ることがある。
Internal Server Error

Could not get request token
  エラー発生時のURL→  http://アプリURL/_ah/gaema/login/twitter


原因調査は分かり辛いのだが、GoogleAppEngineの全てのログを見ると、

Logs - GAE.png
Desktop applications only support the oauth_callback value 'oob'
というエラーが表示されている。

これについてWEBで検索すると、speg03さんのサイトに同様の問題が書いてありました。

speg03の日記 TwitterのOAuthでCallbackさせるときの注意点

つまりtwitter developersの登録でブラウザアプリケーションを選択したら、必ずコールバックURL欄にに何かを記入する必要がある。コールバックURL欄に何も記入しないとデスクトップアプリケーションとして扱われて、PINコード入力を要求される。PINコード入力要求には、当然答えることができないのでエラーが発生するとのことである。

twitter developers登録では、「ブラウザアプリケーション」を選択したら「コールバックURL」に必ず何かを登録する必要がある、というのが今回の記事での注意点。

New Twitter Application 2.png