小编Gol*_*lez的帖子

如何等待 aws cognito authenticateUser 调用(这似乎是一个回调)

所以我们使用了 await/async 调用,但是 aws-amplify 提供的 authenticateUser 命令似乎使用了回调。我是一名 python 编码员,已经有一段时间没有使用 node 进行编码了,所以这可能是一个天真的问题!

我尝试将其转换为这样的承诺:

function authenticateUserAsync(user, authDetails) {
    return new Promise(function(resolve, reject, challenge) {
          user.authenticateUser(authDetails, { 
                          onSuccess: resolve,
                          onFailure: reject, 
                          newPasswordRequired: challenge });

    }).then(
        function(result) { 
           return result; 
        });
}
Run Code Online (Sandbox Code Playgroud)

然后

 idToken = await authenticateUserAsync(user, authDetails,
    function(result) {
        console.log("Token: ");
        console.log(result.idToken);
        return result.idToken;
    },
    function(err) {
        console.log(err);
        this.setState({idToken: ''});
        if (err.code == 'NotAuthorizedException') {
                return 'not_authorized';
        } else {
                return 'unknown_error';
        }

    },
    function(userAttrs, reqAttrs) {
        return 'challenge';
    } 
  );
Run Code Online (Sandbox Code Playgroud)

但是,无论我如何调整它,代码都会继续运行,然后我得到一个未处理的承诺拒绝(在我的测试中,此时身份验证失败)

callback async-await reactjs aws-amplify cognito

4
推荐指数
2
解决办法
3365
查看次数

标签 统计

async-await ×1

aws-amplify ×1

callback ×1

cognito ×1

reactjs ×1