我提出的API请求使用该给Facebook:HTTPS的NodeJS不能正常工作
var hash = crypto.createHmac('sha256', config.FACEBOOK_SECRET).update(access_token).digest('hex');
console.log('hash = ' + hash);
var options = { //start of options
hostname: 'graph.facebook.com',
port: 443,
//path: '/oauth/?appsecret_proof='+hash+'&access_token='+at,
path: '/v2.6/me?fields=id,email,name&access_token=' + req.body.access_token + '&appsecret_proof=' + hash,
method: 'GET'
}; //end of options
var fbResponse = [];
var req = https.request(options, (response) => {
console.log('statusCode: ', response.statusCode);
console.log('headers: ', response.headers);
response.on('data', (d) => {
console.log(d)
fbResponse.push(d);
});
response.on('end',() => {
console.log('No more data in response. ');
res.send(JSON.stringify({
r: fbResponse
}));
return;
})
});
req.on('error', (e) => {
console.error(e);
res.status(500).send(JSON.stringify({
r: 'error'
}));
return;
});
req.end();
这回像这样的回应:
{"id":"123456","email":"bob\u0040gmail.com","name":"bobby bobski"}
注意如何电子邮件没有'@'符号代替它有\ u0040。我不想要这个,我想用@代替。我不确定,因为我没有测试过,但我认为这可能会与所有特殊字符发生。我如何做到这一点,所以我得到了真正的人物?
你能用卷曲测试吗? –
'\ u0040'和'@'符号是json的同义词 –
btw,修复帖子标题。正如我们可以看到https正常工作,否则你根本得不到任何回应 –