0

我不确定 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。

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

但在回复中我只得到这个

{name: 'hello'}

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

4

2 回答 2

1

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});
});

authyUsrId在从 API 请求到 Authy 的回调中设置变量。然后,您尝试authyUsrId在调用中使用它来响应 JSON。但是,register_user它是一个异步调用,因此它下面的代码在回调中运行的代码之前运行。事实上,该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});
    });
});

希望这是有道理的。

于 2016-10-23T14:44:16.837 回答
0

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

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);
    });
});
于 2016-10-22T13:54:42.267 回答