【问题标题】:Nodejs https not working properlyNodejs https 无法正常工作
【发布时间】: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


【解决方案1】:

我找到了答案。您需要解析响应,然后进行字符串化。然后它将起作用。

console.log('This will now have the @ and not the unicode : ' + JSON.stringify(JSON.parse(fbResponse)) );

【讨论】:

  • 您是接受自己的答案,还是删除问题?
  • 我会接受我的回答,因为它可能会在未来对其他人有所帮助。
  • 很高兴知道为什么对答案和问题投反对票?
  • 我同意。也许重命名问题是有必要的,但对两者都投反对票可能有点不必要
猜你喜欢
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
  • 2023-01-18
  • 2016-08-23
  • 2017-03-04
  • 2014-11-15
  • 2019-07-10
  • 2014-01-27
相关资源
最近更新 更多