読者です 読者をやめる 読者になる 読者になる

node.jsからmixi graph apiを使ってみる

プログラム node mixi

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 たのしいお!