Стоит ли вызывать Firebase reload () внутри OnAuthStateChanged? - PullRequest
0 голосов
/ 05 августа 2020

Это хорошая идея - вызвать перезагрузку Firebase () внутри OnAuthStateChanged? Сначала я бы вызвал reload () во время инициализации приложения, но это еще не гарантирует, что объект FirebaseUser загружен. Кажется, что простой способ сделать это - вызвать OnAuthStateChanged (), если пользователь не равен нулю. Лог c состоит в том, что возвращенный профиль пользователя будет соответствовать кэшированному, и никакие последующие вызовы OnAuthStateChanged не будут выполняться. Это работает, но я немного беспокоюсь о побеге l oop по причинам, которые могут быть не очевидны для меня.

            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth)
            {
                final FirebaseUser user = mAuth.getCurrentUser();
             
                //call reload here???

                if (user != null)
                {
                    user.reload().addOnFailureListener(new OnFailureListener()
                    {
                        @Override
                        public void onFailure(@NonNull Exception e)
                        {
                            if (e instanceof FirebaseAuthInvalidUserException)
                            {
                                Log.e(TAG, "INVALID USER EXCEPTION: " + e);
                                Disconnect();
                                SignOut();
                            }
                        }
                    });
                }
           }

1 Ответ

1 голос
/ 05 августа 2020

Я бы не ожидал, что reload() вообще сделает что-нибудь существенное для вновь вошедшего пользователя. Поскольку onAuthStateChanged указывает, что пользователь только что вошел в систему, информация профиля должна была быть только что загружена из серверной службы. Перезагрузка в этот момент вряд ли поможет.

Перезагрузка предназначена для случаев, когда пользователь вошел в систему в течение некоторого времени, и ваш код пытается проверить, изменилось ли что-то в его профиле с момента его появления. последний вход.

...