Node.js JSONparsing错误

我正在尝试使用node.js制作Facebook应用程序,但是在检查已签名的请求时遇到了麻烦。 每次我提出请求时,程序都会抛出一个SyntaxError:Unexpected token ILLEGAL ,如下所示:

undefined:1 ":"721599476"} ^^ SyntaxError: Unexpected token ILLEGAL 

罪魁祸首function如下:

 function parse_signed_request(signed_request, secret) { encoded_data = signed_request.split('.',2); // decode the data sig = encoded_data[0]; json = base64url.decode(encoded_data[1]); data = JSON.parse(json); // ERROR Occurs Here! // check algorithm - not relevant to error if (!data.algorithm || data.algorithm.toUpperCase() != 'HMAC-SHA256') { console.error('Unknown algorithm. Expected HMAC-SHA256'); return null; } // check sig - not relevant to error expected_sig = crypto.createHmac('sha256',secret).update(encoded_data[1]).digest('base64').replace(/\+/g,'-').replace(/\//g,'_').replace('=',''); if (sig !== expected_sig) { console.error('Bad signed JSON Signature!'); return null; } return data; } 

只是为了testing,一个有效的signed_request将是

 WGvK-mUKB_Utg0l8gSPvf6smzacp46977pTtcRx0puE.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEyOTI4MjEyMDAsImlzc3VlZF9hdCI6MTI5MjgxNDgyMCwib2F1dGhfdG9rZW4iOiIxNTI1NDk2ODQ3NzczMDJ8Mi5ZV2NxV2k2T0k0U0h4Y2JwTWJRaDdBX18uMzYwMC4xMjkyODIxMjAwLTcyMTU5OTQ3NnxQaDRmb2t6S1IyamozQWlxVldqNXp2cTBmeFEiLCJ1c2VyIjp7ImxvY2FsZSI6ImVuX0dCIiwiY291bnRyeSI6ImF1In0sInVzZXJfaWQiOiI3MjE1OTk0NzYifQ 

为什么我得到这个错误,当它是有效的JSON和简单地使用JSON静态string将正常工作,并有任何提示来解决这个问题?

谢谢。

好吧,经过一些testing,我已经自己解决了这个问题,对于浪费的问题感到抱歉。

在我的base64库中的东西没有正确解码string(虽然它似乎是 – 所以它一定是一个非显示字符或填充等)

我已经转换到https://github.com/kriszyp/commonjs-utils/blob/master/lib/base64.js适合我的目的,虽然需要修改,以支持base64url解码,而不是正常的base64,它现在似乎工作正常。