Как определить тип ошибки аутентификации в AWS Amplify с помощью Kotlin? - PullRequest
1 голос
/ 04 августа 2020

Я хочу отображать различные ошибки для пользователя, когда он входит в систему через AWS Amplify, используя Kotlin. Это то, что я установил в качестве последнего параметра Amplify.Auth.signIn ():

{ error ->
     inputEmail.error = "Check if the e-mail is valid"
     inputPassword.error = "Check if the password is valid"
})

«error» - это «Throwable?» который я хотел применить к различным исключениям AWS и проверить, было ли приведение успешным. Тем не менее, все исключения AWS Amplify основаны на версии Java Throwable. Есть ли способ заставить эти приведения работать или есть альтернативный способ определения типов ошибок в Kotlin?

1 Ответ

2 голосов
/ 04 августа 2020

Последний аргумент в метод signIn(...) имеет тип Consumer<AuthException>. Это функция, которая принимает AuthException и что-то с ним делает. Таким образом, вам не нужно понижать ввод.

Есть исключения нескольких типов, которые расширяют AuthException.

Как в этот ответ , я предлагаю исчерпать эти типы с помощью конструкции when. Перефразирование:

when (error) {
    is SessionUnavailableOfflineException -> doSomething()
    is InvalidAccountTypeException -> doSomethingElse()
    // etc.
}

Вы также можете проверить наличие ошибок в активном сеансе аутентификации с помощью fetchAuthSession(...):

Amplify.Auth.fetchAuthSession(
    { result ->
        val cognitoAuthSession = result as AWSCognitoAuthSession
        if (AuthSessionResult.Type.FAILURE == cognitoAuthSession.identityId.type) {
            // do stuff
        }
    },
    { error -> Log.e("AuthQuickStart", error.toString()) }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...