feat(auth): Provide a clear message during getTokens that there are no valid tokens on device #3518
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
N/A
We received a report that it is difficult to detect why the token refresh process fails, and if it is recoverable or not. This information is critical for a customer to understand whether or not the customer should log the user out.
We were able to identify that when a customer saw
Exception("No cached session.")
and there was an exception attached, such asUnknownHostException
, these errors should be transient.However, there are cases where the user only sees
Exception("No cached session.", null)
which leaves further questions on whether or not it is due to an invalid token, or some other transient issue.Description of changes:
getAuthenticationDetails
documentation states: "Call out to the dev to get the credentials for a user.". We can't do this during refresh flow, however, if we see this message, we understand that the Cognito service has stated that the refresh token is no longer valid.The customer will now see ``Exception("No cached session.", new CognitoNotAuthorizedException("No valid tokens on device."))` and be able to act on this information.
I've added logging in additional places that are not expected to be hit, such as
getMFACode
, to make sure that we always provide better descriptions on refresh failures.By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.