【问题标题】:Is it a good idea to call Firebase reload() inside OnAuthStateChanged?在 OnAuthStateChanged 中调用 Firebase reload() 是个好主意吗?
【发布时间】:2020-08-05 19:18:41
【问题描述】:

在 OnAuthStateChanged 中调用 Firebase reload() 是个好主意吗?最初我会在应用程序初始化期间调用 reload() ,但不能保证 FirebaseUser 对象已经加载。如果用户不为空,则似乎一种干净的方法是在 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();
                            }
                        }
                    });
                }
           }

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

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

    重新加载适用于用户已登录一段时间,并且您的代码正在尝试检查自上次登录后其个人资料是否发生了变化。

    【讨论】:

    • 也许我做错了什么——但这不是我所看到的。如果我禁用帐户并重新启动应用程序 onAuthStateChanged 将返回已登录并缓存的配置文件。如果帐户被禁用,它应该返回 NULL
    • 这里也有描述link
    • 我只想检查用户帐户在应用程序的早期启动部分是否仍然有效 - 并认为 onAuthStateChanged 实际上可能是一个好地方...
    • 如果用户的帐户无效,Firebase Auth SDK 将不允许用户登录。
    • 我不会自动让用户退出 - 他们保持登录状态。我应该这样做吗?当应用程序重新启动时,FirebaseAuth 仍然具有缓存的用户配置文件,并且我已经验证它会使用缓存的数据生成 onAuthStateChanged,即使该帐户被禁用/删除也是如此。所以要么我等待一个小时让令牌过期(我认为这会起作用但不确定)还是强制重新加载()。无法在活动周期回调中调用 reload(),因为无法保证已加载用户配置文件 - 所以我要么从计时器执行此操作,要么调用 onStateAuthChanged()
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多