我目前有一个Android应用程序,使用amazon-cognito-sdk进行用户登录。当用户不存在或输入错误的密码时显示的消息不是很好所以我想自定义这个但我看不到任何方式这样做?
我在工作中做了类似的事情。基本上,我们将SDK异常映射到我们的内部AuthenticationException类,每个类型都有自己的消息。下面是kotlin中的示例代码。
private fun toAuthError(exception: Exception): AuthenticationError {
return when(exception) {
is UserNotFoundException -> AuthenticationError.UserNotFound()
is InvalidParameterException -> AuthenticationError.InvalidParameter()
is NotAuthorizedException -> AuthenticationError.UserNotFound()
is InvalidPasswordException -> AuthenticationError.InvalidPassword()
is InvalidLambdaResponseException -> AuthenticationError.InvalidResponse()
is LimitExceededException -> AuthenticationError.LimitExceeded()
is UsernameExistsException -> AuthenticationError.UsernameExists()
is UserNotConfirmedException -> AuthenticationError.UserNotConfirmed()
is CodeMismatchException -> AuthenticationError.VerificationCodeMismatch()
is ExpiredCodeException -> AuthenticationError.VerificationCodeExpired()
else -> AuthenticationError.UnknownError()
}
}
请注意,在认知onFailure
回调的AuthenticationHandler
期间调用上述方法。
val authenticationHandler = object : AuthenticationHandler {
...
override fun onFailure(exception: Exception) {
Timber.e("login Failure $exception")
subscriber.onError(toAuthError(exception))
}
}