amplify-flutter icon indicating copy to clipboard operation
amplify-flutter copied to clipboard

ExpiredCodeException exception thrown for both expired code and invalid code.

Open JudeOchalifu opened this issue 3 years ago • 1 comments

So, when I try to enter an expired registration confirmation code , I get the exception:

E/amplify:flutter:auth_cognito( 2536): CodeExpiredException E/amplify:flutter:auth_cognito( 2536): CodeExpiredException{message=Confirmation code has expired., cause=com.amazonaws.services.cognitoidentityprovider.model.ExpiredCodeException: Invalid code provided, please request a code again. (Service: AmazonCognitoIdentityProvider; Status Code: 400; Error Code: ExpiredCodeException; Request ID: 9f499db8-f7c4-48d8-8c62-23d6795deb24), recoverySuggestion=Resend a new confirmation code and then retry operation with it.} E/amplify:flutter:auth_cognito( 2536): at com.amplifyframework.auth.cognito.util.CognitoAuthExceptionConverter.lookup(CognitoAuthExceptionConverter.java:83) E/amplify:flutter:auth_cognito( 2536): at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$3.onError(AWSCognitoAuthPlugin.java:346) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobile.client.internal.InternalCallback.call(InternalCallback.java:77) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobile.client.internal.InternalCallback.onError(InternalCallback.java:67) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobile.client.AWSMobileClient$14$1.onFailure(AWSMobileClient.java:2243) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.confirmSignUp(CognitoUser.java:384) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobile.client.AWSMobileClient$14.run(AWSMobileClient.java:2229) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobile.client.internal.InternalCallback$1.run(InternalCallback.java:101) E/amplify:flutter:auth_cognito( 2536): at java.lang.Thread.run(Thread.java:923) E/amplify:flutter:auth_cognito( 2536): Caused by: com.amazonaws.services.cognitoidentityprovider.model.ExpiredCodeException: Invalid code provided, please request a code again. (Service: AmazonCognitoIdentityProvider; Status Code: 400; Error Code: ExpiredCodeException; Request ID: 9f499db8-f7c4-48d8-8c62-23d6795deb24) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:742) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:420) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:229) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.services.cognitoidentityprovider.AmazonCognitoIdentityProviderClient.invoke(AmazonCognitoIdentityProviderClient.java:6779) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.services.cognitoidentityprovider.AmazonCognitoIdentityProviderClient.confirmSignUp(AmazonCognitoIdentityProviderClient.java:2540) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.confirmSignUpInternal(CognitoUser.java:414) E/amplify:flutter:auth_cognito( 2536): at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.confirmSignUp(CognitoUser.java:381)

The same exception is thrown when I deliberately enter an invalid verification (confirmation) code.

Shouldn't there be separate exception class and message for expired codes and invalid codes?

JudeOchalifu avatar Nov 20 '21 04:11 JudeOchalifu

@JudeOchalifu - I apologize as this issue seemed to drop off our radar.

Do you get a CodeExpiredException for an incorrect code even after a new code has been requested? I believe Cognito will throw this exception whenever the code provided most recently has expired, regardless of of wether or not the "correct" code is being entered. I think this is by design as the end user will need to request a new code regardless of what code they were attempting to use. To put it another way - it doesn't really help to know that the code would or would have not worked in the past, the important information is that there are no active codes that a user could provide, and a new one needs to be requested.

To issue a new code to the user, you can call Amplify.Auth.resendSignUpCode(username: 'username');

Jordan-Nelson avatar Jul 27 '22 20:07 Jordan-Nelson

@JudeOchalifu - I am going to close this out since I have not heard back and I believe you are experiencing expected behavior. Please open a new issue if you have any questions of other issues. Thanks.

Jordan-Nelson avatar Aug 16 '22 13:08 Jordan-Nelson

@Jordan-Nelson That's fine. I haven't worked with this in a long time. Hopefully, I won't get to open a new ticket on it.

JudeOchalifu avatar Aug 16 '22 13:08 JudeOchalifu