Реализация государственной персистенции в котлине - PullRequest
0 голосов
/ 09 апреля 2019

Я пытался внедрить постоянное состояние в мое приложение для Android, чтобы пользователи оставались в системе, но я не мог понять документы, поэтому я побежал сюда за помощью.

Вот фрагмент:

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
  .then(function() {
    // Existing and future Auth states are now persisted in the current
    // session only. Closing the window would clear any existing state even
    // if a user forgets to sign out.
    // ...
    // New sign-in will be persisted with session persistence.
    return firebase.auth().signInWithEmailAndPassword(email, password);
  })
  .catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

Я пробовал много вещей, но я не совсем понял, где они хранят переменную firebase.

В Документах есть эта строка:

Это изменит тип сохранения в указанном экземпляре Auth для текущего сохраненного сеанса Auth и применит этот тип сохранения для будущих запросов входа в систему

Но я все еще не могНе совсем понятно, какой экземпляр Auth, я использую FirebaseAuth UI.

Вот мой код:

    private fun showSignInOptions() {
        startActivityForResult(
            AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
            RC_SIGN_IN
        )
    }

    // FirebaseUI Auth code.
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == RC_SIGN_IN) {
            val response = IdpResponse.fromResultIntent(data)

            if (resultCode == Activity.RESULT_OK) {
                // Successfully signed in
                val user = FirebaseAuth.getInstance().currentUser

                Log.d("AUTH", "Sign in SUCCESSFUL. $user")
                // ...
            } else {
                Log.d("AUTH", "Sign in failed.")
                // Sign in failed. If response is null the user canceled the
                // sign-in flow using the back button. Otherwise check
                // response.getError().getErrorCode() and handle the error.
                // ...
            }
        }


    }

Я звоню showSignInOptions() в onCreate().

Заранее спасибо за помощь: D

1 Ответ

0 голосов
/ 09 апреля 2019

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

FirebaseAuth.getInstance().currentUser

возвращает ноль. Если он возвращает null, вы можете инициализировать FirebaseAuthUI, чтобы они могли войти в систему. Таким образом, конечный продукт должен выглядеть примерно так:

val mUser = FirebaseAuth.getInstance().currentUser
mUser?.let{
//do your stuff here
} ?: showSignInOptions()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...