Twilio Authy 回调问题

Twilio Authy Callback issue

我不确定 Twilio Authy register_user() 的成功回调是否触发。在我的代码中

var authyUsrId;
//global.authyUsrId;

app.post('/forTwilio', function(req, res){
    // send the received data to Twilio Authy
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        //global.authyUsrId = 'world';
                 authyUsrId = 'world';  
    });
    //res.set("Content-Type","application/json");
        res.json({name: 'hello', msg: authyUsrId});
    //res.json({name: 'hello', msg: global.authyUsrId});
});

虽然新用户已成功添加到 Authy 并且响应状态为 200。

我想在 register_user() 的成功回调中将 authyUsrId 的值设置为某个值,并在我发送给 POST 请求的 JSON 响应中使用它。

但在响应中我只得到这个

{name: 'hello'}

有什么方法可以调试,特别是 register_user() 回调部分吗?

我解决了。直接从 register_user() 的成功回调发送响应。

app.post('/forTwilio', function(req, res){

    // send the received data to Twilio Authy
    authy.register_user('jimmy@example.com', '9224753123', '91', function(err, res2){
        res.send(res2.user);
    });
});

这里是 Twilio 开发人员布道者。

我看到你已经解决了 中的问题,但我只是想解释一下发生了什么以及为什么这是适合你的解决方案。

在您的原始代码中:

app.post('/forTwilio', function(req, res){
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        authyUsrId = 'world';  
    });
    res.json({name: 'hello', msg: authyUsrId});
});

您在从 API 请求到 Authy 的回调中设置了 authyUsrId 变量。然后,您尝试在调用中使用 authyUsrId 来响应 JSON。但是,register_user 是一个 异步 调用,因此它下面的代码在回调中 运行 的代码之前 运行s。事实上,reguster_user 函数必须发出一个 HTTP 请求,所以回调只有 运行 一旦该请求完成。

如果您在原始代码中添加了日志记录,如下所示:

app.post('/forTwilio', function(req, res){
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        console.log("Received response from Authy");
        authyUsrId = 'world';  
    });
    console.log("Sending JSON response");
    res.json({name: 'hello', msg: authyUsrId});
});

您会在日志中看到:

Sending JSON response
Received response from Authy

您的解决方法是在您拥有所需的所有数据时在回调中响应您的原始 Web 请求。这就是它起作用的原因。如果我更新您的原始代码,它现在看起来像:

app.post('/forTwilio', function(req, res){
    authy.register_user('maverick@example.com', '8753565612', '91', function(err, res){
        authyUsrId = 'world';  
        res.json({name: 'hello', msg: authyUsrId});
    });
});

希望这是有道理的。