まだ調べ中なので、とりあえずメモです。
コード書いて確認できました。(2009/11/15)
Yahoo!IDでどうやって認証するんだってことで、del.icio.us Bookmarks のソース読んでみると、どうやら、delicious.comで認証した際に設定されるCookieでhttps://api.del.icio.usの認証を行える模様です。
https://api.del.icio.us/ に対するリクエストを下記のように作成します。
- リクエストヘッダのAuthorizationに、id/パスワードを共に"cookie"としたもので設定。
- Content-Typeに'application/x-www-form-urlencoded'を設定。
- リクエストのbodyとして、hostが".delicious.com"、nameが"_user"となっているCookieの内容を設定し送信。
コードにすると、下記のような感じです。(抜粋なので、このままコピペだと動かないかも)
var request = new XMLHttpRequest(); request.open('POST', url, true); request.setRequestHeader('Authorization', 'Basic '+ window.btoa('cookie:cookie')); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); var authToken = null; var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"] .getService(Components.interfaces.nsICookieManager); var iter = cookieManager.enumerator; while(iter.hasMoreElements()) { var cookie = iter.getNext(); if (cookie instanceof Components.interfaces.nsICookie) { if ((cookie.host == '.delicious.com') && cookie.name == '_user') { authToken = '_user=' + encodeURIComponent(cookie.value); } } } request.send(authToken);
APIのURLを"api.del.icio.us"->"api.delicious.com"に変えてくれれば、こんな面倒な手間は不要になると思ってます。
早く変えてくれないかなぁ。