バグがあったので修正しました。
mogya/oauth-adapter – GitHub
.bbpBox{background:url(http://a1.twimg.com/a/1295051201/images/themes/theme13/bg.gif) #B2DFDA;padding:20px;}
@mogya While executing Timer, received script error. ‘Result of expression ‘URL’ [undefined] is not an object. at oauth.js (line 453)’でした!
一番最初、アプリケーションを起動してoAuth認証を通した直後にAPIを呼び出すと(=僕のブログコード通りに書くとw)、上記エラーになる不具合を修正しました。
ただ、またもや互換性が保てなくて、oAuthAdapter.send()の戻り値を使うのが無理になりました。申し訳ない。
sendから戻ってきたからといってAPI呼び出しが完了して戻り値が入っていることは保証できないので、その代わりにonSuccessコールバックを利用してください。
初期化部分も含めたコード全体は、readmeで見ることができます。
How to start
- 新しくプロジェクトを作る
- Resources/libディレクトリを作って、oAuthAdapter.jsと、oauth.js,sha1.jsを入れる
- readmeのコードをapp.jsにべったり上書きする
- ‘YOUR CONSUMER SECRET’,’YOUR CONSUMER KEY’,部分を自分のキーに置き換える。SECRETが先であることに注意
- Launchすると、oAuth認証が立ち上がり、その後勝手につぶやき、タイムラインをデバッグコンソールに出力します。
解説
Davidの書いたoAuthAdapterには、sendを呼び出した時点でoAuth認証が完了していなかったら、呼出をいったん保留して、認証後に再呼び出ししてくれるという機能が付いています。
上記エラーは、この再呼出部分のコードを修正するのを忘れていたことが原因だったので、これは修正しました。
ところが、そういう非同期の呼び出しが起こる以上、関数の戻り値にAPIの戻り値が入っていることは保証できなくなりました。(というか、最初から保証できなかったのですけど、僕が気づいていませんでした。)
あと、全然別件なのですけど、Davidの書いたoAuthAdapterでは、sendの引数にtitleとpSuccessMessageを渡して、API呼び出しが成功すると、かならずポップアップが出る仕様になっています。update_statusならともかく、タイムラインを更新したり、バックグラウンドでユーザー情報を取得したりする場合、この仕様はちょっとありえません。
二つの問題をバッサリ片付けるアイデアとして、titleとpSuccessMessageの使用を廃止して、代わりにonSuccessコールバックを採用することにしました。onSuccessコールバック関数の中でダイアログを出せば、従来と同じ挙動をすることができます。