node.js/express で CouchDB をパワーアップ大作戦
CouchDB をメインのアプリケーションサーバーとして使っているものの、サーバーサイドで他のサービスと連携したいときにはちょっと不便さを感じてしまいます。
そういうときは、イマドキ?のWeb Frameworkの上で、CouchDBをデータベースとして扱えば良いんですが、CouchDB のアプリと密に連携する(一部の機能のためだけだから)ためには言語も同じにした方が良いだろう、ということで、node.js を使い始めています。
とりあえず、認証をtwitterに任せよう。
CouchDBでアプリ作った場合、ユーザーDB自体はCouchDBに保持されます。。これはちょっとやだ。CouchDBのインスタンス毎にユーザー抱えるとか。。。
で、イマドキ、ということで、twitter を認証サーバーとして使うんです。OAuth ができればOKってことで。
PHPとかPythonとかRubyとかJavaとか、GAEとかあるけど、Server Side JavaScript のサンプルがねーYO! ってことで、書いてみました。
実装の中身
gist においときました。Server Side JavaScriptはIEがいないから書いていて気持ちが良いですね。
必要なのは node.js と Express です。 token 保持のセッション周りとか面倒だったので Express に頼りました。Express は Ruby の Sintra に inspire された、node.js 用 Web Framework だそうです。あと、Connect という node.js 用のミドルウェアを使います。
という感じです。実際には oauth モジュールは独立したライブラリとしてnode.jsにあるので簡単に実装できました。 このoauthライブラリは認証用URIに対して、QueryString以外に(たとえばRequest BodyにJSONを埋め込むとか)リクエストを送ることができない、という実装上の制約はあるものの、普通に使う分には問題なさそうです。
ソースコードも一通り見ましたがJavaScriptでも非常にわかりやすい。