2016-06-08 86 views
-2

我提出的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。我不想要這個,我想用@代替。我不確定,因爲我沒有測試過,但我認爲這可能會與所有特殊字符發生。我如何做到這一點,所以我得到了真正的人物?

+0

你能用捲曲測試嗎? –

+0

'\ u0040'和'@'符號是json的同義詞 –

+0

btw,修復帖子標題。正如我們可以看到https正常工作,否則你根本得不到任何迴應 –

回答

-1

我找到了答案。你需要解析這個響應然後進行串聯化。它會工作。

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

你會接受你自己的答案,還是刪除這個問題? –

+0

我會接受我的答案,因爲它可能會在未來幫助其他人。 – user2924127

+0

很高興知道爲什麼在答案和問題上倒下了嗎? – user2924127