当前位置: 首页 > 知识库问答 >
问题:

Twilio Authy回调问题

卢元龙
2023-03-14

我不确定Twilio Authy的register\u 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\u user()的成功回调中设置authyUsrId的值,并在发送给POST请求的JSON响应中使用它。

但在回应中,我只得到了这个

<代码>{姓名:'你好'}

是否有任何方法可以调试register\u user()回调部分?

共有2个答案

狄玉书
2023-03-14

我解决了。直接从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);
    });
});
阮轶
2023-03-14

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\u user是一个异步调用,因此它下面的代码在回调中运行的代码之前运行。事实上,reguster\u 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});
    });
});

希望这有意义。

 类似资料:
  • 我的应用程序应该更新,如果tmx是新的,如果旧的什么都不做,如果不存在插入文件。如果文档被插入,它工作完美,否则它不能正确更新或说E11000 dup密钥。想弄清楚我的回调是不是错了还是逻辑。(我是node.js+MongoDB的新手)MongoClient=require(“MongoDB”).MongoClient,assert=require(“assert”),url=“MongoDB:/

  • 我正在使用带有代码交换验证密钥(PKCE)的OAUTH2.0身份验证服务来访问Spotify令牌。我用我的BundleID和重定向URI在Spotify注册了我的应用程序。 问题是,在我输入了Spotify登录的电子邮件和密码后,我会用URL中的代码重定向到RedirectUri,但什么也没有发生。 这里是我的代码: 身份验证用户的代码 这正确地打开了我的Safari,但随后我用访问URL中的令牌

  • 信任问题 在顺序的大脑规划和JS代码中回调驱动的异步处理间的不匹配只是关于回调的问题的一部分。还有一些更深刻的问题值得担忧。 让我们再一次重温这个概念——回调函数是我们程序的延续(也就是程序的第二部分): // A ajax( "..", function(..){ // C } ); // B // A和// B现在 发生,在JS主程序的直接控制之下。但是// C被推迟到 稍后 再发生,

  • 我目前正在创建一个轻量级的程序来查看和操作类似于程序Blender或3DS max的3D对象。 我正在使用C、GLFW和OpenGL。虽然我计划让它跨平台,但我目前只在一台运行Debian9.0(stretch)和XFCE桌面环境的计算机上工作。 目前回调glfwSetDropCallback似乎从来没有被调用,无论我尝试什么。我已经设定了断点和断言,但什么都没有。我尝试过的所有其他回调都很好。我

  • 我正在努力理解我的代码在这个Leetcode问题上出了什么问题。 问题:给定一个字符串,确定它是否是回文,只考虑字母数字字符,忽略大小写。 现在,我通过了108/476个案例,我没有通过这个测试:“一个人,一个计划,一条运河:巴拿马”。 这是我的代码,请帮我识别问题!

  • 问题内容: 请问有关节点和Redis的控制流问题的一些建议吗?(又名试图习惯JavaScript的Python编码器) 我不明白为什么和(Redis查找)需要是回调,而不是简单地成为语句-这使生活变得非常复杂。 基本上,我想查询一个集合,然后在获得集合的结果时,需要对每个结果进行获取。 当我获得所有数据后 ,我需要将其广播回客户端。 目前,我在两个回调中使用一个全局对象执行此操作,这看起来很混乱。