2012年2月7日火曜日

D箱のアシスト事件 第3夜

特集DraftPad/短期集中連載
D箱のアシスト事件

第3夜. OAuth するアシスト

そもそものはじまりは、この記事をみつけたことにありました。

How-to: Secure OAuth in JavaScript

これまでにも、いろいろと DraftPad アシストを作ってみたけど、一貫して、静的なファイルに記述した Javascript + HTML + CSS だけで完結するものばかりでした。

というのも、仕事でフロントエンドエンジニアの真似事のようなことはやりますが、サーバーサイドの Web アプリの開発に自分で手を出したことはなかったし、とても難しくて、自分でやれるようなことだとは思っていなかったからです。

その一方で、簡単なスクリプトを書いて、Dropbox の Public フォルダに配置すればすぐに使える、そういうカジュアルなスタイルが気に入っていました。負け惜しみじゃなく、DraftPad のアシストとしてなら、それで相当のことができるのです。

できないことのほうを挙げると、次の3つになると思います。


1. 他の人や他の利用環境とデータをシェアするために、サーバーサイドにデータを保存すること

2. クライアントサイドのシステムのリソースにアクセスすること

そして、

3. アプリケーションのみが知りうる情報を、アプリケーションの内部に秘密裡に保持すること


1. と 2. は、はじめから期待していないようなものだからいいんですが、口惜しいのは 3. です。3. ができたら、たとえば、OAuth ありきの API を使ったアシストも考えられるのにって。でも、ソースコードが 100% 誰にでも読めてしまう Javascript だけでは絶対に無理。

ところが、前掲の記事は、「でも YQL を使えば隠せるね。」と、こういうわけです。

YQL とは何か? 一言でいえば、クライアントサイドからよそのドメインのフィードやAPI を利用するための、

・マッシュアップフィルター + JSONPラッパー

ということになります。が、この記事はさらに付け加えて、

・フィルター処理で使用する変数の値を、サーバーサイドに保持できるサービス

でもあることを示し、そして、ここに OAuth の Consumer Key や Consumer Secret を入れておけば、クライアントサイドで動く Javascript で、ちゃんとセキュアに OAuth  アプリが作れるよ、と、実際に作り方までていねいにガイドしてくれていたのです。

あ、これだ!と、飛びつきましたよ。

最初に作ったのは、Tumblr にテキストをポストするアシストでした。「Save to Tumblr」 。実は、iPhone 版の Tumblr アプリのテキスト入力がアレなので、前々からせび欲しかったのです。

Save to Tumblr

すぐにできました。興奮しましたね。実用上の念願を果たせたことももちろんですけど、自分で OAuth するアシストを作れたことに。でも、でもですね ... 。

つづく。

0 件のコメント: