Firebase实时数据库不会更新值

时间:2016-09-24 13:19:02

标签: java android firebase firebase-realtime-database

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

        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”消息,也不会打印出“Error”消息。
这是一个问题的原因是我试图验证firebase数据库的代码。 我给它一个5秒的时间窗口来改变值,这意味着找到了代码,如果在5秒之后triggers[0]的值没有改变,则意味着代码无效。 />

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

  

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

1 个答案:

答案 0 :(得分:0)

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

  

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

在我发现一些窥探之后,由于Firebase-Auth机制(授予用户24小时令牌,然后取消授权),导致无法到达服务器。登记/> 因此解决方案是实现perma-login [永久登录]功能,或者每次用户销毁应用程序或从头开始时,检查是否有用户使用getCurrentUser()方法登录{ {1}},如果有,请退出。

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