我正在使用AWS Cognito来验证我正在构建的新应用程序中的用户。
在我的项目中,我使用
因此,我的代码如下:
当我执行这段代码时,我成功确认了我的用户。我可以在AWS Cognito控制台上看到这一点。然而,在客户端的javascript控制台中,我没有收到
但是当我尝试使用
是什么导致了这个错误?我该如何解决?我希望用户第一次使用
认为我必须自己检索
但现在我遇到了一个略微不同于以前的错误:
在我的项目中,我使用
amazon-cognito-identity-js
库(Github链接:https://github.com/aws-amplify/amplify-js/tree/master/packages/amazon-cognito-identity-js)。由于此特定用户池中的用户无法自行注册,因此我手动注册他们。根据Github上的README.md所述,我知道我需要“使用案例23”。因此,我的代码如下:
...
const userPoolData = {
UserPoolId: <MY_USER_POOL_ID>,
ClientId: <MY_CLIENT_ID>
};
const userPool = new CognitoUserPool(userPoolData);
const authenticationData = {
Username: email,
Password: tempPassword
};
const userData = {
Username: email,
Pool: userPool
}
const authenticationDetails = new AuthenticationDetails(authenticationData);
const cognitoUser = new CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: (result) => {
console.log(result);
},
onFailure: (err) => {
console.log("Error from cognito auth: ", err);
},
newPasswordRequired: (userAttributes) => {
delete userAttributes.email_verified;
cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this);
}
})
...
当我执行这段代码时,我成功确认了我的用户。我可以在AWS Cognito控制台上看到这一点。然而,在客户端的javascript控制台中,我没有收到
result
对象,反而出现了一个错误:Uncaught (in promise) TypeError: Cannot read property 'onFailure' of undefined
at eval (CognitoUser.js:572)
at eval (Client.js:108)
但是当我尝试使用
newPassword
替代之前发送的tempPassword
进行登录时,现在我可以成功获得result
对象并且三个令牌都存在。所以我知道一切都有点奏效,但不是我期望的结果。是什么导致了这个错误?我该如何解决?我希望用户第一次使用
tempPassword
和他们的newPassword
进行登录后立即接收到result
对象,这样他们就可以开始使用应用程序。编辑:
认为我必须自己检索
userAttributes
是一个错误。 newPasswordRequired
函数会自动传递它们。因此,我更新了上面的代码以与Github上提供的“用例23”相匹配。但现在我遇到了一个略微不同于以前的错误:
Uncaught (in promise) TypeError: callback.onFailure is not a function
at eval (CognitoUser.js:572)
at eval (Client.js:108)
在Cognito方面,一切仍然正常运作,但是我的onFailure
函数肯定出了问题,这很奇怪。
你有什么想法吗?
提前感谢。
delete userAttributes.email_verified;
吗? - sayborascognitoUser.completeNewPasswordChallenge(newPassword, userAttributes);
为cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this);
。 - sayboras