gpt4 book ai didi

node.js - Nodejs 更新后,charCodeAt 出错

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:42 25 4
gpt4 key购买 nike

所以我一直在 Node 0.8.20 上开发我的应用程序,并一直使用 Passport 进行谷歌身份验证。

我将 Node 更新到最新版本 0.10,但收到错误

_modules\passport-openid\node_modules\openid\lib\convert.js:33
if(i.charCodeAt(0) > 127)
^
TypeError: Object n++n++:?n++9rn++??n++n+++ón++1??7q~n++n++qn++v#s?fn++?n++Z.'n+
has no method 'charCodeAt'

我已经更新到最新版本的 Passport 和 Passport 谷歌模块,它似乎没有帮助。

此外, Passport 社区也没有就此提出任何问题。所以我认为这与我的代码有关。

更新: 好吧,看来这个错误不是特定于 Node 0.10 的。它存在于 0.9 。建议的解决方法是转向 google oauth。还没有解决办法

任何帮助都会很棒。

最佳答案

从 0.9.0 版本开始,node 中的加密模块似乎默认返回缓冲区对象而不是二进制字符串。

此差异将解决问题:

diff --git node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js
index 1431dd7..798f741 100644
--- node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js
+++ node_modules/passport-google/node_modules/passport-openid/node_modules/openid/openid.js
@@ -634,9 +634,9 @@ openid.associate = function(provider, callback, strict, algorithm)
if(algorithm.indexOf('no-encryption') === -1)
{
dh = _createDiffieHellmanKeyExchange(algorithm);
- params['openid.dh_modulus'] = _toBase64(dh.getPrime());
- params['openid.dh_gen'] = _toBase64(dh.getGenerator());
- params['openid.dh_consumer_public'] = _toBase64(dh.getPublicKey());
+ params['openid.dh_modulus'] = _toBase64(dh.getPrime("binary"));
+ params['openid.dh_gen'] = _toBase64(dh.getGenerator("binary"));
+ params['openid.dh_consumer_public'] = _toBase64(dh.getPublicKey("binary"));
}

_post(provider.endpoint, params, function(data, headers, statusCode)
@@ -713,10 +713,10 @@ openid.associate = function(provider, callback, strict, algorithm)
else
{
var serverPublic = _fromBase64(data.dh_server_public);
- var sharedSecret = convert.btwoc(dh.computeSecret(serverPublic));
+ var sharedSecret = convert.btwoc(dh.computeSecret(serverPublic, "binary", "binary"));
var hash = crypto.createHash(hashAlgorithm);
hash.update(sharedSecret);
- sharedSecret = hash.digest();
+ sharedSecret = hash.digest("binary");
var encMacKey = convert.base64.decode(data.enc_mac_key);
secret = convert.base64.encode(_xor(encMacKey, sharedSecret));
}

关于node.js - Nodejs 更新后,charCodeAt 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com