HatenaのIDが抜ける件の分析@2ステップで抜ける!
http://blog.isocchi.com/2008/09/hatena.html
すげー。そんなことできるんだー。はてなgeekすげえええ
と、思って、ソースを見て調査してみたんだけど、意外とめっさ簡単なロジックでびっくり。w
1.GET:投げる。entries.jsonにリクエスト。RKSパラメーター取得。
http://s.hatena.ne.jp/entries.jsonにGET
{"rks":"***********************","can_comment":0,"entries":[]}
がjsonで返ってくる。こんなかの、[RKS]パラメータを記録。
2:GET:もっかい投げる。star.add.jsonにリクエスト。
1.で取得した[RKS]パラメータをひっつけて、再度GETする。
そーすっと、
{"quote":"","name":"satoru_net"}
みたいのがjsonで返ってきて、hatena_idげっと。
この仕組みは楽しいなあ。はてなユーザ向けサービスがサクサク作れそうだ。
というか、これってもともと、そういうのを想定されて作られてる気もしなくもない。
サンプルソース
上記、手順を再現したソース。
http://kokkuri.jp/hatena/
function $(id){ return document.getElementById(id); } window.onload = request1; function request1(){ var uri = 'http://s.hatena.ne.jp/entries.json?callback='; new JSONLoader({callback:request2,config :[{ uri: uri }]}).load(); } function request2(results){ var rks = results.rks; var uri = "http://s.hatena.ne.jp/star.add.json?uri=http://hoge.jp/&rks=" + rks + "&callback="; new JSONLoader({callback:result,config :[{ uri: uri }]}).load() } function result(results){ $("hatena").innerHTML = ("<h1>Hello " + (results.name ? results.name : "Guest") + "</h1>"); }
ちなみに、JSON取得部分は↓を参照。
http://muumoo.jp/news/2007/05/30/0jsonloader.html