【发布时间】:2016-06-08 05:11:22
【问题描述】:
我正在使用这个向 facebook 发出 api 请求:
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。我不想要这个,我想要@。我不确定,因为我没有测试过这个,但我认为这可能会发生在所有特殊字符上。如何制作才能获得真正的角色?
【问题讨论】:
-
你能用 curl 测试一下吗?
-
\u0040和@符号在 json 中是同义词 -
顺便说一句,修复帖子标题。我们可以看到 https 可以正常工作,否则您根本不会得到任何响应
-
你在使用正文解析器吗??
-
@James111我将它用于我的许多快递路线,但我没有将它用于向 Facebook 提出的这个请求。
标签: javascript node.js