2013-08-26 41 views
3

我想使用sails.js访问控制器内的facebook信息。这里是我的代码:如何使用sails.js访问外部API?

module.exports = { 


    commonLikes : function(req,res){ 
    var other_uid = req.param('uid'); 
    //var me = req.params.user.uid; 
    console.log(other_uid); 

    User.findOne({uid : other_uid}).done(function(err,data){ 
     var other = data; 

    var http = require('http'), options = { 
      host : "https://graph.facebook.com", 
      port : 80, 
      path : "/"+other.uid+"/likes?access_token="+other.token, 
      method : 'GET' 
    }; 

    var webservice_data = ""; 

    var webservice_request = http.request(options, function(webservice_response) 
    { 
     webservice_response.on('error', function(e){ console.log(e.message); }); 
     webservice_response.on('data', function(chunk){ webservice_data += chunk;}); 
     webservice_response.on('end', function(){res.send(webservice_data);}); 
     console.log('coucou'); 
    }); 



    }); 
    } 

}; 

的http.request功能看起来不工作,虽然并试图访问时,我得到一个错误/顶/ commonLikes UID = XXXXX?

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: getaddrinfo ENOTFOUND 
    at errnoException (dns.js:37:11) 
    at Object.onanswer [as oncomplete] (dns.js:124:16) 

有谁知道如何使用sails访问外部API?

感谢,

回答

4

host不应该包括协议:

var http = require('http'), options = { 
     host : "graph.facebook.com", 
     port : 80, 
     path : "/"+other.uid+"/likes?access_token="+other.token, 
     method : 'GET' 
    }; 

如果你想使用https,使用https模块,而不是http,并使用端口443和不当您完成请求时忘记添加req.end()

+0

谢谢!它工作完美! – adc06