所以我们使用了 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)
但是,无论我如何调整它,代码都会继续运行,然后我得到一个未处理的承诺拒绝(在我的测试中,此时身份验证失败)