【问题标题】:Firebase Realtime Database doesn't update valuesFirebase 实时数据库不更新值
【发布时间】:2016-09-24 13:19:02
【问题描述】:

我一直在使用 firebase 数据库编写应用程序,在过去的两天里,它不起作用。 我的意思是我有一个到数据库的连接,但是当我尝试通过设置addListenerForSingleValueEvent 读取信息时,即使我updateChildren,它也不会运行ValueEventListener

        DatabaseReference mBlaze = FirebaseUtil.getDatabase(PLACES);
        mBlaze.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot snapShot : dataSnapshot.getChildren()) {
                    System.out.println("Hello");
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                System.out.println("Error");
            }
        });
        long sTime = System.currentTimeMillis();
        while (!triggers[0])
            if (System.currentTimeMillis() - sTime > 5000)

我在用于运行addListenerForSingleValueEvent 的数据库中有一个触发器值。

如果我尝试在我的设备\模拟器上运行它,它不会打印出消息“Hello”,也不会打印出消息“错误”。
这是一个问题的原因是我正在尝试针对 firebase 数据库验证代码。 我给它一个 5 秒的时间窗口来改变值,这意味着找到了代码,如果 5 秒后triggers[0] 的值没有改变,则意味着代码无效。

在我尝试减少代码的过程中,我偶然发现了setLogLevel,在我将它与Level.DEBUG 一起使用后,我发现这条线一遍又一遍地出现:

获取令牌时出错:用户的凭据不再有效。用户必须重新登录。

【问题讨论】:

  • 首先,ValueEventListener 应该在没有调用updateChildren 的情况下运行。其次,您是否检查过onCancelled 是否被调用?
  • 抱歉,我很难理解您看到的行为与预期的行为。您能否将代码缩减为 MCVE 并在运行代码之前包含 JSON(作为文本,无屏幕截图)?
  • @TheSunshinator onCancelled 没有被调用。 @FrankvanPuffelen 我减少了代码,但我怀疑它会导致同样的问题\缺少与您的连接。请注意,我在尝试减少代码时发现了一个错误。
  • 其实while循环可以防止ValueEventListener被触发。我有一个类似的问题,我有一个while(true) if(isTriggered) break;,它似乎比ValueEventListener 更重或在处理器上具有更高的优先级,因此它从未被触发并且我的程序冻结了。您应该使用interface 进行回调。

标签: java android firebase firebase-realtime-database


【解决方案1】:

正如我稍后所说,当我试图减少代码时,我发现了 setLogLevel 方法,它与 Level.DEBUG 一起使用,然后我用它来发现错误:

获取令牌时出错:用户的凭据不再有效。用户必须重新登录。

经过一番窥探,我发现,由于 Firebase-Auth 机制,它授予用户 24 小时令牌,然后取消身份验证,导致无法访问服务器。
所以解决方案是实现一个永久登录[永久登录]功能,或者每次用户销毁应用程序或从头开始时,检查是否有用户使用getCurrentUser()方法登录FirebaseAuth ,如果有,请退出。

TL;DR:
确保您没有超过 24 小时的用户登录,如果有,请断开连接,然后重新连接。

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多