0

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

FB的例子不起作用。

4

2 回答 2

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

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

于 2012-07-05T16:01:37.657 回答
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();
于 2013-07-25T09:38:35.417 回答