ぼくーなのさーってさっきつぶやいたのは、タイガーマスクの終わりの唄のつもりだったんだけど、清志郎?というツッコミをいただいた。そういえばあった、ぼくーなのさー。でも、これなんだっけ?いま、ここしか思い出せない。気持ち悪い。なんだっけ?
ひとりOAuth
もし、エンドユーザーが、OAuth のコンシェーマーとなるアプリのオーナーだったら、当然、自身でそのコンシェーマーキーを知っていてなんら不都合はないわけだ。OAuth なしでは使いようのない API しか持たない Dropbox が jsonp をサポートしないのは、Web ブラウザで動く JS アプリのどこにコンシェーマーキーを隠すつもりなんだ?という議論にすぐに行き着くからだけど( http://forums.dropbox.com/topic.php?id=21221 )、ユーザー自身がそのソースコードを自分で調達して自分だけで使うぶんには問題ないだろう?
もし、Dropbox が jsonp (なり、その他の CORS の方法) をサポートしてくれたら、たとえば、DraftPad の内蔵ブラウザに読み込んだ Javascript で直接 Dropbox 上のファイルを読み書きするアシストなんていうのも、比較的容易に作成できる。
その場合、最初の OAuth 認証の際、ユーザーは自らが Dropbox に登録した Dropbox API アプリ (実体はない) の consumer key と consumer secret を入力することになるわけだけど … ん?なんかおかしい?
DraftPad Assist: Save to Tumblr のエラーについて
長文を投げて明示的にエラーが発生するとき、YQL から次のようなメッセージが返ってきている。
You must specify a yql statement (q=) to execute.
これとは少し異なるのだが( “(q=)”がない)、ほぼ同じメッセージを返している YQL のコード が CPAN にあがっていた。
http://cpansearch.perl.org/src/VIORELS/WebService-YQL-0.04/lib/WebService/YQL.pm
この中のサブルーチン、sub query { … の箇所。
いずれにしても、要するに、リクエストに YQL 文が含まれていない場合のエラーだ。Save to Tumblr からは、xmlHttpRequest の POST メソッドで、YQL の INSERT 文を、q というバラメーターにセットして送信しているのだか、YQL 側は q が存在しない、もしくは中身が空だといっているわけだ。
そのとき、クライアントが長すぎる q を投げていないのか?それとも、サーバーが長すぎた q を受けつけないのか?
また、実際には投稿に失敗しているにも関わらず、明示的なエラーが発生しないケースもある。この場合、q はたしかに投げられ、受け付けられているということになるのだろうか? そして、YQL から Tumblr にデータを送信する段階で両者とも把握できない何らかのトラブルが発生しているということになるのだろうか?
しかし、そもそも、同じデータで、q が存在したりしなかったりするのはなぜだろうか?
DraftPad Assist “Save to Tumblr”
つくってみました。DraftPad に書きつけたテキストを Tumblr にポストするためのアシストです。一行目がタイトル、二行目以降が本文となります。
こちらのアシスト生成フォームからご自分の Tumblr Blog のホスト名を入力して、アシストをインポートしてみてください。takahashihideki.tumblr.com なら takahashihideki の部分ですね。アシストは特定のホスト専用になります。
一回目の起動時に、Tumblr の認証を受けます。いったん認証を受けてしまえば、あとはずっと認証された状態で投稿することができます。
認証状態を解除したいときは、上のアシスト生成フォームで “Save to Tumblr” と一緒に出てくる “Reset Tumblr” を起動してください。
アシストの本体は、dropbox に配置したスタティックな html + javascript ですが、認証のしくみは How-to: Secure OAuth in JavaScript という記事にしたがった安心設計となっております。バックエンドに Yahoo! の YQL という仕組みを使っています。
はい、それでは、みなさんご起立願います。せーの、タンブラーのために!
2012/1/7 追記。
本文テキストが2000文字を超えたあたりから、投稿に成功したようにみえて実は投稿できていなかったり、明示的にエラーが発生するようになったりします。いろいろ調べてみましたが、いまのところ打つ手なしです。ご活用の際は、どうか悪しからず、あらかじめご了承ください。
How-to: Secure OAuth in JavaScript
DraftPad から Tumblr にテキストを投稿するアシストを、How-to: Secure OAuth in JavaScript これの言うとおりに作ってみて、目下、ひとりユーザーテスト中。一回認証を受けてしまえば、あとは結構テキパキ動いてくれて非常に感動しております。
ってリンク貼ったつもりだったんだけどな。http://derek.io/blog/2010/how-to-secure-oauth-in-javascript/
ここに。なんなんだ。
おお、いけるね。
じゃあ、DraftPadの充実したブロガー支援系アシストを使えば、リッチな表現もできるね。その点でも、本家の iPhone App よりいいよね。最近出た、テーブルのやつとかさ、flickr に上げた写真挿入するやつとか。
![(via [ふうあダイアリー] 寝床で鳥を見る -たにぞう日記- (なまけでこ増量中の忘備録的もの))](http://24.media.tumblr.com/tumblr_lyimxjz9qp1qzi814o1_500.jpg)
