2010年10月3日日曜日

NicoBot ~Chrome Extensions~[内部的な事]

今回は、前回紹介させていただいたChrome Extensions「NicoBot」を
作成するにあたって使用した技術について書かせていただきます。

まずは、なんといってもChrome Extensionsで
クライアント側の処理を記述してます。
サーバ側はGoogle app engine(slim3)を使ってます。
Twitterへのアクセスには、Twitter4jを使用してます。

処理の流れは以下のとおり。

  1. Extensionのアイコンのクリックイベントで、ユーザを一意に特定できるようにする為に現在日付とホスト名を取得し、それを合わせた文字列(①)をサーバ側に渡す。
  2. サーバ側では、リクエストを受け取ったらtwitterにアプリケーションの認証ページへのリダイレクト処理を行う。
  3. ユーザが認証を許可した場合、サーバ側でtwitterから発行されたoAuth情報と先程クライアント側から受け取った文字列(①)を紐付けてBigTableに登録する。そして、認証完了のペーシで画面遷移を行う。
  4. クライアント側では、認証完了ページへの遷移をハンドルして先程の作成した文字列(①)をlocalStorageに保存し、Extensionのアイコンを認証完了後のアイコンに変更する。
  5. この状態で、Extensionのアイコンをクリックすると、ON ⇔ OFF の切り替えが行えるようになる。
  6. ちなみに、このON ⇔ OFF の状態もlocalStorageに保存する。
  7. ONの状態で、ニコニコ動画のURLに遷移すると、クライアント側ではURLからニコニコ動画の動画のID部分を抜き出し、ユーザを特定するための文字列(①)とID部分(②)をサーバ側に渡す。
  8. サーバ側では、受け取った動画ID(②)を元に、ニコニコ動画APIを使用して動画情報を取得する。
  9. その後は、ユーザ情報(①)でBigTableを検索し、TwitterのoAuth情報を取得しTwitterにPOSTする。
ただ、今のままだとExtensionをアンインストールしてもlocalStorageに
残ったままになってしまうので、オプションページを作成して、
そこからlocalStorageの情報を削除できるようにしたいなぁー。


そうそう、実は地味にアップデートさせました。
Twitterに投稿した際に、画面に右下にポップアップウインドウ出るように
してみました。これで、誤爆にも気付けるはず!

以下、参考サイト