2010年06月10日

OAuth への道 ―― OAuth gate というのを考えてみた。

OAuth gate の動きを少々修正しました。
いや、修正したと言っても、まだ作ってませんが。
さて……。


Basic 認証で動く Bot と同じパソコンの中で動いて、OAuth 認証にして Twitter に投げるという発想で。

もともとが安易な性格なので

・Windows で動いて
・Bot のみ対応
・そもそも、POST のみ対応
・一回ごとに(認証だけではなく)接続と、切断を行うBotのみ対応

というパターですが。
こんなのでできるのかな?
とりあえず、○つけたのは、コードを書いたつもり。



○ 1)[SYSTEM] port の値(デフォルトは 80)で、サーバーとして待機する
○ 2)クライアントからの接続要求を受け入れる
○ 3)クライアントから切断が要求されたら、接続を切断する(自動)
×   ・その際、Twitter 側に接続中であれば、その接続を切断する

○ 4)接続完了後、クライアントからのデータを受信する
○ 5)クライアントからのデータは CRLF で1行ごとに区切る
○ 6)2個の空行(CRLF のみの行)を受信したら、次の処理に移行する

○ 7)最初の空行の直前までをヘッダとする。
○ 6)最初の空行の次の行をボディとする(ボディは1行のみ)
○   ・以上の結果を、Memo_server_recv に順次書き込む

8)ヘッダの処理
○   ・POST で始まり、.json を含む行 → POST http://api.twitter.com/1/statuses/update.json HTTP/1.1 に差し替える
○   ・POST で始まり、.json を「含まない」行 → POST http://api.twitter.com/1/statuses/update.xml HTTP/1.1 に差し替える
○   ・Authorization: で始まる行
×     Basic 以降、行末までの文字列を取得する
×     文頭・文末のスペースをトリミングする
×     得られた文字列のハッシュを算出する(MD5)
×     算出されたハッシュが、[USER] ID_Pass と一致することを確認する
×    ・一致しない場合、Twitter 側への送信は行わない
×      クライアントへは、とりあえず、エラーの旨を返す。
○     OAuth ヘッダを算出し、これに差し替える
○   ・Host: で始まる行 → Host: api.twitter.com に差し替える
○ ・その他の行 → そのまま
×   ・POST で始まる行、Authorization: で始まる行のいずれかが存在しない場合、Twitter 側への送信は行わない
      クライアントへは、とりあえず、エラーの旨を返す。

○   ・以上の変換処理(そのままの行を含む)結果を、Memo_twitter_send に順次書き込む

9)ボディの処理
○   ・ボディの内容を、そのまま、Memo_twitter_send に書き込む

× 10)api.twitter.com に接続要求を行う
× 11)接続を待つ → 60秒以内に接続できないとき、Memo_twitter_recv に、「接続エラー」を書き込み、サーバーとしての接続を遮断する
× 12)api.twitter.com に対して、Memo_twitter_send の内容を順次送信する
× 13)api.twitter.com に対して、読み込みを行い、読み込み内容を、Memo_twitter_recv に順次書き込むとともに、クライアントに送信する
× 14)受信終了文字列を受信したら( とか)Twitter への接続を切断する

○ 15)クライアントからの切断要求を受けて、接続を切断する。(3)と同じ
posted by 麻野なぎ at 12:20| Comment(0) | TrackBack(0) | Twitter と Bot の周辺
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/38855781

この記事へのトラックバック