J'essaie d'obtenir la photo de profil facebook de l'utilisateur connecté à mon application. L'API de Facebook indique que http://graph.facebook.com/517267866/?fields=picture
renvoie l'URL correcte sous forme d'objet JSON.
Je veux obtenir l'URL de l'image sur mon code. J'ai essayé ce qui suit mais il me manque quelque chose ici.
var url = 'http://graph.facebook.com/517267866/?fields=picture';
http.get(url, function(res) {
var fbResponse = JSON.parse(res)
console.log("Got response: " + fbResponse.picture);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
L'exécution de ce code a les conséquences suivantes:
undefined:1
^
SyntaxError: Unexpected token o
at Object.parse (native)
L'argument res
du rappel http.get()
n'est pas le corps, mais plutôt un objet http.ClientResponse . Vous devez assembler le corps:
var url = 'http://graph.facebook.com/517267866/?fields=picture';
http.get(url, function(res){
var body = '';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var fbResponse = JSON.parse(body);
console.log("Got a response: ", fbResponse.picture);
});
}).on('error', function(e){
console.log("Got an error: ", e);
});
Je pense que pour des requêtes HTTP simples comme celle-ci, il vaut mieux utiliser le module request
. Vous devez l'installer avec npm (npm install request
) pour que votre code ressemble à ceci:
const request = require('request')
,url = 'http://graph.facebook.com/517267866/?fields=picture'
request(url, (error, response, body)=> {
if (!error && response.statusCode === 200) {
const fbResponse = JSON.parse(body)
console.log("Got a response: ", fbResponse.picture)
} else {
console.log("Got an error: ", error, ", status code: ", response.statusCode)
}
})
J'utilise get-json très simple d'utilisation:
$ npm install get-json --save
Importer get-json
var getJSON = require('get-json')
Pour faire une demande GET
, vous feriez quelque chose comme:
getJSON('http://api.listenparadise.org', function(error, response){
console.log(response);
})
Unirest library simplifie beaucoup cela. Si vous voulez l'utiliser, vous devez installer le paquetage unirest
npm. Ensuite, votre code pourrait ressembler à ceci:
unirest.get("http://graph.facebook.com/517267866/?fields=picture")
.send()
.end(response=> {
if (response.ok) {
console.log("Got a response: ", response.body.picture)
} else {
console.log("Got an error: ", response.error)
}
})