我有一个旧应用程序正在经历升级过程(服务器硬件/操作系统、NodeJS + 模块、SQL 服务器等)。
应用程序具有 SOAP 的 2FA。为此,我使用了这个模块。 现在我已经升级到模块的最新版本(1.0.0),但遇到了以下错误:
req.then is not a function
。
根据文档,API 调用方面没有太大变化,所以我很确定这是我错过/没有注意到的东西,但我只是不知道它是什么。
const url = 'https://example.com/wsi/service.php?wsdl';
let args = {
username: 'username',
authKey: 'auth_key',
sender: '',
recipient: req.user.phone,
message: '',
scheduleDate: '',
validity: '',
callbackUrl: ''
};
let request_with_defaults = request.defaults({ 'proxy': 'proxy', 'timeout': 5000, 'connection': 'keep-alive' });
let soap_client_options = { 'request': request_with_defaults };
args.message = generateSMSCode(req, codeTime);
args.recipient = phone;
soap.createClient(url, soap_client_options, function(err, client) {
client.sendSmsAuthKey(args, function(err, result) {
if (err) {
console.log(currentDateTime.getCurrentDate() + " - ERROR!");
console.log(err);
}
console.log(currentDateTime.getCurrentDate() + " - Code Sent at " + codeDateTime + "!");
res.redirect('/auth/validate');
});
});
到目前为止,我注意到,如果删除选项参数(soap_client_options),我确实会收到服务器错误,因为没有身份验证密钥,但除此之外,我无法弄清楚。
是不是options参数有问题?
我很感激任何建议。
LE:
function generateSMSCode(req, codeTime) {
console.log(currentDateTime.getCurrentDate() + " - sendsms.js > generateSMSCode");
let token = speakeasy.totp({
secret: JSON.parse(req.user.secretID).base32,
encoding: 'base32',
});
let generatedMessage = token + " SMS MESSAGE";
return generatedMessage;
}
你解决问题了吗? 我使用 TLS1.0 和代理调用我的肥皂服务时遇到同样的问题