Twitkit-1.1が動かなくなったので直してみた
Twitterクライアントとして愛用しているFirefoxアドオンのTwitkitですが、タイムラインが全く更新されていないことに気づきました。まあ、忙しくてTwitkitを見てなかったので、気づかなかっただけかも知れませんが。。。
とりあえず、LiveHTTPHeaderで見てみると、APIリクエストでHTTP 400とかHTTP 404とかがバシバシ返ってきていました。で、Twitkitのxpiをばらして、javascriptソース(chrome/content/twitkit.js)とhttp://apiwiki.twitter.com/REST+API+Documentationを比べてみると、リクエストメソッドが違っていたり、URLが変わっていたりすることが判明。
そこで、このエントリの最後のように修正し、xpiファイルのtwitkit.jsを更新。Firefoxに再度インストールしてみると、うまく動きました。修正後のxpiをDo You PHP?にUPしてありますので、奇特な方は自己責任でどうぞ。
*** chrome/content/twitkit.js.org 2009-04-09 22:19:36.000000000 +0900 --- chrome/content/twitkit.js 2009-04-09 22:19:52.000000000 +0900 *************** *** 188,194 **** if ( !Tweetbar.httpHeaders ) { Tweetbar.httpHeaders = { 'X-Twitter-Client': 'TwitKit', ! 'X-Twitter-Client-Version': '1.1', 'X-Twitter-Client-URL': 'http://engel.uk.to/twitkit/1.1.xml', }; if ( Tweetbar.username && Tweetbar.password ) --- 188,194 ---- if ( !Tweetbar.httpHeaders ) { Tweetbar.httpHeaders = { 'X-Twitter-Client': 'TwitKit', ! 'X-Twitter-Client-Version': '1.1-shimooka', 'X-Twitter-Client-URL': 'http://engel.uk.to/twitkit/1.1.xml', }; if ( Tweetbar.username && Tweetbar.password ) *************** *** 539,544 **** --- 539,545 ---- ( this.currentList == 'friends' ) ? theurl = Tweetbar.protocol + '://twitter.com/statuses/friends/' + this.username + '.json?lite=true' : theurl = Tweetbar.protocol + '://twitter.com/statuses/followers.json?lite=true'; var aj = new Ajax( theurl, { headers: Tweetbar.http_headers(), + method: 'get', postBody: {}, onSuccess: function (raw_data) { *************** *** 559,564 **** --- 560,566 ---- } else if ( this.currentList == 'replies' ) { var aj = new Ajax( Tweetbar.protocol + '://twitter.com/statuses/replies.json', { headers: Tweetbar.http_headers(), + method: 'get', postBody: {}, onSuccess: function (raw_data) { *************** *** 578,583 **** --- 580,586 ---- } else if ( this.currentList == 'me' ) { var aj = new Ajax( Tweetbar.protocol + '://twitter.com/users/show/' + this.username + '.json', { headers: Tweetbar.http_headers(), + method: 'get', postBody: {}, onSuccess: function (raw_data) { *************** *** 611,616 **** --- 614,620 ---- var panel = Tweetbar.currentList; var aj = new Ajax( Tweetbar.api_url_for(panel), { headers: Tweetbar.http_headers(), + method: 'get', postBody: {}, onComplete: function (raw_data) { *************** *** 1022,1028 **** */ sign_out: function () { ! var aj = new Ajax( Tweetbar.protocol + '://twitter.com/account/end_session', { headers: Tweetbar.http_headers(), postBody: {}, onSuccess: --- 1026,1032 ---- */ sign_out: function () { ! var aj = new Ajax( Tweetbar.protocol + '://twitter.com/account/end_session.json', { headers: Tweetbar.http_headers(), postBody: {}, onSuccess: *************** *** 1066,1071 **** --- 1070,1076 ---- var authr = new Ajax( Tweetbar.protocol + '://twitter.com/account/verify_credentials', { headers: this.http_headers(), + method: 'get', postBody: {}, onComplete: function (raw_data) {