我一直在使用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
使用它后,我发现这一行一遍又一遍地出现:
获取令牌时出错:用户的凭据不再有效。用户必须重新登录。
答案 0 :(得分:0)
正如我后面所说,当我尝试减少代码时,我找到setLogLevel
方法,该方法与Level.DEBUG
一起使用,然后我用它来发现错误:
获取令牌时出错:用户的凭据不再有效。用户必须重新登录。
在我发现一些窥探之后,由于Firebase-Auth机制(授予用户24小时令牌,然后取消授权),导致无法到达服务器。登记/>
因此解决方案是实现perma-login [永久登录]功能,或者每次用户销毁应用程序或从头开始时,检查是否有用户使用getCurrentUser()
方法登录{ {1}},如果有,请退出。
TL; DR:
确保用户登录的时间超过24小时,如果有,请断开连接,然后重新连接。