muumoo.jp


ニュース記事検索


過去ログ 2008年04月18日 - ニュース過去ログ

ニュース過去ログ

2008/04/18 管理人日記 Firefox 3でまた見てる

Firefox 3にするとまた見てるが動かなくなるのを直した。

GM_xmlhttpRequestでBasic認証のダイアログが出ない

従来は、GM_xmlhttpRequestを使って投稿して、そのとき認証が必要な場合は勝手にBasic認証のダイアログが出るようになっていました。それが、Firefox 3は出ないようです。

ってことで、GM_xmlhttpRequestでBasic認証はあきらめた。

代わりにJSONP

実験したところ、JSONPならBasic認証のダイアログが出るのは確認できたので、これを使えば良さそう。

Twitterに投稿するAPIは(statuses/update)、リファラがあるとダメだしGETでもダメなので、JSONPでは呼び出せない。でも、それとは別にTwitterには認証だけするAPI(verify_credentials)があります。これはリファラがあってもOK、GETでもOK。

「また見てる」の投稿時、まずはJSONPでこの認証APIを呼び出すようにしました。ここで認証が必要な場合はBasic認証のダイアログが出ます。そうすると認証済のCookieが返ってくるので、そこでGM_xmlhttpRequestで投稿APIを呼び出す。これで、従来通りの動きをFirefox 3でも作れました。

JSONPが終わってからGM_xmlhttpRequest

ちなみに、JSONPが終わったあとにGM_xmlhttpRequestを呼ぶのがちょっと難しかった。

JSONPは終わった後コールバック関数を呼びますが、その関数はwindowオブジェクトの中に入ってないといけない(ってことでいいんですよね?)。しかしGMスクリプトなので、unsafeWindowということになります。この中に関数を作って、そこでGM_xmlhttpRequestを呼んだんですが、これはエラーになります。「unsafeWindowからGM_xmlhttpRequestを呼ぶな」という。確かに危険ですもんね。

仕方ないので、コールバック関数は空っぽの実装にして、何もしないことにした。代わりに、JSONPのために動的に生成したscript要素のloadイベントでGM_xmlhttpRequestをやるようにしたらうまく行った。まあその辺はソース見ればわかると思います。

ついでに

文字数制限をちょっと緩めておいた。

動画の再生時間が取得できない場合に (aN:aN) となる件は、面倒なので対応してないです。ごめんなさい。再生時間が取れないとき「NaN」という値が返りますが、ゼロ詰めの際に下2桁を切り出してるので「aN」となっているだけです。ていうかどういう時に再生時間が取れないの?

この記事のURI:
http://muumoo.jp/news/2008/04/18/0matanicovideo.html


Copyright© 2002-2007 muumoo.jp All Rights Reserved.