node.jsからmixi graph apiを使ってみる
APIを使うところまではid:kyoro353くんあたりがすでに書いているので、おいておきます。
ということですでにaccess_tokenが取得できたところからです。
node.jsのhttp.createClient().requestを使って下記のようにmixiにアクセスします
var http = require('http'), client = http.createClient(80, ’api.mixi-platform.com’), request = client.request('GET', '/2/voice/statuses/[User-ID]/user_timeline', {'HOST': ’api.mixi-platform.com’, 'Authorization': 'OAuth げっとしたあくせすとーくん'}); request.on('response', function(response){ response.on('data', function(chunk){ var data = JSON.parse(chunk); }); }); request.end();
としておくと、dataイベント取得したからと言って、返却されるデータ(この場合JSON)が断片でJSON.parseに失敗するケースが多々有ります。
ほんとは別のもっと適切な回答があるのかもしれませんが(response.headersにContent-Lengthが入っている場合はそれと比較するとか)、取り急ぎ自分用のメモも兼ねて
var http = require('http'), client = http.createClient(80, ’api.mixi-platform.com’), request = client.request('GET', '/2/voice/statuses/[User-ID]/user_timeline', {'HOST': ’api.mixi-platform.com’, 'Authorization': 'OAuth げっとしたあくせすとーくん'}); request.on('response', function(response){ var rstring = ''; response.on('data', function(chunk){ //try{ rstring += chunk; //var data = JSON.parse(rstring); //}catch(ex){} }); // - 以下追加 - response.on('end', function(){ var data = JSON.parse(rstring); }); // - ここまで - }); request.end();
としておくと、データが回収されてJSONとして解析できたときに初めて動作します。
そんなことは無いと思いますが、当然、
[1,2,3],[4,5,6]
とかいう「もっと、ちゃんと全体をArrayにしてください!」というような応答が返ってくると、最初の一つ目の配列が帰ってきた時点で終わることになります。悲しい悲しい。
というわけで、いろいろホゲホゲ中です。
たのしいお!javascript たのしいお!