4 votes

Comment accéder à une API externe en utilisant sails.js ?

J'essaie d'accéder aux informations de facebook dans un contrôleur en utilisant sails.js. Voici mon code :

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

    });
  }

};

La fonction http.request ne semble pas fonctionner et j'obtiens une erreur lorsque j'essaie d'accéder à /Likes/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)

Quelqu'un sait-il comment accéder à une API externe à l'aide de sails ?

Merci,

5voto

RoryKoehein Points 1888

Les host ne devrait pas inclure le protocole :

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

Si vous souhaitez utiliser https , utiliser le https au lieu de http et utiliser le port 443. Et n'oubliez pas d'ajouter req.end() lorsque vous avez terminé la demande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X