如何使用node.js发送facebook api批处理请求

时间:2012-07-05 16:01:36

标签: facebook node.js batch-processing

如何使用node.js发送facebook api批量请求?

FB的例子不起作用。

2 个答案:

答案 0 :(得分:2)

但我终于让danwong / restler.js像这样工作:

exports.updateUserFriends = function (userData, next) {
    var TOKEN = userData[1];
    var fbID = userData[3].id;
    var batchreq = {};
    batchreq.batch = [];
    batchreq.batch.push({"method":"GET", "relative_url":fbID+"/"});
    batchreq.batch.push({"method": "GET", "relative_url":fbID+"/friends?limit=50"});
    restler.post('https://graph.facebook.com?access_token='+TOKEN, 
                  {data:"batch="+JSON.stringify(batchreq.batch)})
                  .on('complete', function(data) {
               console.log(data);
               return next;
    });
}; 

所以我想我会发布这个以拯救别人一点挫折。

答案 1 :(得分:0)

首先要注意的是,FB Api中的“批处理请求只允许POST”。

var https = require('https');
var url = '/?access_token='+ YOUR_ACCESS_TOKEN_HERE,
batch=[{

 "method":"GET",
 "relative_url":page + "/insights"

  }, {

  "method": "GET",
  "relative_url":page 

}];

  url = url + '&batch=' + JSON.stringify(batch);

  console.log(url);

var options = {
      host:'graph.facebook.com',
      path:url,
      method: 'POST'
   };



 var req =https.request(options, function(res){
   console.log('STATUS: ' + res.statusCode);
   console.log('HEADERS: ' + JSON.stringify(res.headers));
   res.setEncoding('utf8');
   var body='';
   res.on('data', function(chunk){
  // console.log("body:" + chunk);
  body += chunk;

    });
   res.on('end', function(){
      var fbRes = JSON.parse(body);
      console.log(fbRes);
   });
});

 req.on('error', function(e) {
      console.log('problem with request: ' + e.message);

 });


 req.end();