Почему Firebase pendingAuthResult возвращает ноль? - PullRequest
7 голосов
/ 13 января 2020

Я пытаюсь внедрить Войти через Apple , используя Firebase Authentication. Я следую за firebase / quickstart- android sample.

Мой фрагмент входа переопределяет onStart() для проверки любых ожидающих результатов:

override fun onStart() {
    super.onStart()

    val pending = auth.pendingAuthResult

    pending?.addOnSuccessListener { authResult ->
        Timber.d("Successful login, pending")
    }?.addOnFailureListener { e ->
        Timber.d("Failed login, pending")
    }
}

И кнопка, которая инициирует поток входа:

btnApple.onClick {
    viewModel.appleLogin(requireActivity())
}

ViewModel вызывает следующий метод из хранилища:

// Initiate sign-in flow only if there are no pending results
if (auth.pendingAuthResult != null) {
    return
}

val scopes = listOf("email", "name")
val provider = OAuthProvider.newBuilder("apple.com", auth)
    .setScopes(scopes)
    .build()

auth.startActivityForSignInWithProvider(activity, provider)
    .addOnSuccessListener { authResult ->
        Timber.d("Successful login, normal")
    }
    .addOnFailureListener { e ->
        Timber.e(e, "Failed login, normal")
    }

Официальное руководство states:

Вход с помощью этого метода переводит вашу активность в фоновый режим, что означает, что она может быть восстановлена ​​системой во время входа в систему.

Итак Я начал тестировать ожидающий результат, завершив работу приложения в Android Studio и завершив процесс входа в Chrome. Как только я вернулся в приложение, был вызван onStart(), но pendingAuthResult всегда был нулевым.

Чтобы сделать его более интересным, при перезапуске приложения я вошел в систему. Тогда, если я Выйдите из системы и снова введите фрагмент для входа. Ожидается результат, и я получаю Successful login, pending. Кроме того, ожидаемый результат не исчезает . Если я оставлю фрагмент входа и вернусь go, ожидающий результат все еще там, и я получу еще один Successful login, pending.

Я даже протестировал firebase / quickstart- android сам образец, и у него точно такая же проблема.

Что может быть возможной причиной этой проблемы? Я использую firebase-auth:19.2.0.

1 Ответ

0 голосов
/ 22 января 2020

Если вы используете FireBase для подписи с помощью Apple, и если он обрабатывается вручную, то вам следует использовать механизм декодирования строк. Пожалуйста, найдите руководство FireBase для того же и надеюсь, что оно будет работать. дайте мне знать, если возникнет проблема!

Подписание гильдии пожарной базы с яблоком

...