在OnAuthStateChanged内部调用Firebase reload()是个好主意吗?

时间:2020-08-05 19:18:41

标签: android firebase firebase-authentication

在OnAuthStateChanged内部调用Firebase reload()是个好主意吗?最初,我会在应用初始化期间调用reload(),但不能保证FirebaseUser对象已加载。如果用户不为null,则似乎在OnAuthStateChanged()内部进行调用是一种干净的方法。逻辑是返回的用户配置文件将与缓存的配置文件匹配,并且不会发出对OnAuthStateChanged的后续调用。它可以正常工作-但我出于某种可能对我不明显的原因而担心循环失控。

            @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 个答案:

答案 0 :(得分:1)

我不希望reload()对新登录的用户做任何重要的事情。由于onAuthStateChanged指示用户刚刚登录,因此配置文件信息应该刚刚从后端服务加载。那时重新加载可能不会有帮助。

重新加载的目的是在用户登录一段时间后,您的代码正在尝试检查自上次登录以来其个人资料是否有所更改。