2013-08-26 5 views
3

Я пытаюсь получить доступ к информации из facebook в контроллере, используя sails.js. Вот мой код:Как получить доступ к внешним api с помощью sails.js?

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) 

Кто-нибудь знает, как я могу получить доступ к внешнему 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

Смежные вопросы