简体   繁体   中英

How to send facebook api batch request with node.js

How do I send facebook api batch request with node.js?

FB's examples do not work.

but I finally got danwong/restler.js to work like this:

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;
    });
}; 

So I thought I'd post this to save someone else a bit of frustration.

First thing to note is that, "Only POST is allowed for batch requests" in FB Api.

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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM