2010年11月13日土曜日

Twitterアプリを開発でOAuthを利用する際のはじめのはじめの一歩

卒研で、OAuth認証を利用したTwitterアプリを作らせているのですが、ちょっとつまづいたのでそのメモ書き。

まず、TwitterAPIを利用するには、IDとパスワードが必要なわけで、2010年8月まではBASIC認証ができましたが、それ以降はできなくなりました。その代替としてOAuth/xAuthを利用する事になります。この手順としては基本は以下のとおりです。

事前準備
  1. OAuthを使うアプリケーションをTwitterサイトで事前登録する 
  2. 設定画面よりConsumer keyとConsumer secret(アプリのIDとパスワードみたいなもの)を入手
(開発する)アプリでの手順
  1. ユーザにアプリが自身のIDを利用してTwitterにアクセスできるように許可をさせる。具体的にはConsumer keyとConsumer secretを利用して、アプリで認証のためのURLを入手し、そのサイトへユーザをアクセスさせる。
  2. サイト上でユーザが許可するとPINCODE(暗証番号)が表示される
  3. Consumer key、Consumer secret、PINCODEを利用して、AccessTokenとAccessTokenSecretを入手する(これが、ユーザのID、パスワード替りになります)。
  4. 以後、 Consumer key、Consumer secret、AccessToken、AccessTokenSecretを利用してAPIにアクセスする
基本的に、PINCODEの入手は一度だけでいいです。(これを短期間で何回もやってると 401エラーがでるような気がします。真偽は未確認ですが、、、)

アプリを開発する際には、
  • アプリ認証のためにブラウザを起動し認証用URLへ行かせる記述が必要。ウェブアプリの際には、自分のサイトへ戻ってこさせる記述も必要。
  • PINCODEをユーザに入力させる画面とそれを保存する記述が必要。
  • AccessToken、AccessTokenSecretを保存する記述が必要
ということになります。

以上が基本的な考え方ですが、アプリの形態によりちょっとした補足をしておきます。


【マルチユーザでないアプリの場合】
自分しか使わない、あるいはbotのようなアプリの際に、わざわざPINCODEを入手してAccessToken、AccessTokenSecretを入手するプログラムの記述と操作をするのははばからしいです。Twitter上のアプリのサイトには、自分用のAccessToken、AccessTokenSecretを入手するボタンがあります。これをコードに埋め込んでおけば、手軽に利用できます。

【PINCODE入手させることが困難な場合】
アプリによっては、PINCODE入手のためにウェブサイトにアクセスさせることが困難なケースが考えられます。あるいは、いったんウェブブラウザでサイトに行かせるというのは、ユーザビリティの観点からもいまいちです。その際には、xAuth認証(AccessToken、AccessTokenSecretを入手する最初の時だけ、ID、パスワードを入力させる)という枠組みもあります。これを利用する際には、Twitterへメール申請が別途必要です。

0 件のコメント:

コメントを投稿