Итак, мы используем вызовы await / async, но команда authenticateUser, предоставляемая aws-ampify, похоже, использует обратный вызов. Я программист на Python и давно не кодировал ноды, так что это может быть наивным вопросом!
Я пытался преобразовать его в обещание так:
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;
});
}
и позже
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';
}
);
Но, независимо от того, как я его подправил, код течет сразу, а затем я получаю необработанное отклонение обещания (в моем тесте аутентификация не проходит в данный момент)