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});
});
});
希望这是有道理的。
我不确定 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});
});
});
希望这是有道理的。