簡體   English   中英

Firebase實時數據庫不會更新值

[英]Firebase Realtime Database doesn't update values

我一直在使用firebase數據庫編寫應用程序,在過去的兩天里,它不起作用。 我的意思是,我要與數據庫的連接,但是當我試圖通過設置讀取信息addListenerForSingleValueEvent它不運行ValueEventListener即使我updateChildren

        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發現了setLogLevel ,在我將它與Level.DEBUG一起使用Level.DEBUG ,我發現這一行一遍又一遍地出現:

獲取令牌時出錯:用戶的憑據不再有效。 用戶必須再次登錄。

正如我后面所說,當我試圖減少代碼時,我找到了setLogLevel方法,它與Level.DEBUG一起Level.DEBUG ,然后我用它來發現錯誤:

獲取令牌時出錯:用戶的憑據不再有效。 用戶必須再次登錄。

經過一些窺探,我發現,由於Firebase-Auth機制,它為用戶授予了24小時的令牌,然后取消授權,導致無法到達服務器。
所以解決方案是實現perma-login [永久登錄]功能,或者每次用戶銷毀應用程序或從頭開始,檢查是否有用戶使用FirebaseAuthgetCurrentUser()方法登錄,並且如果有,請退出。

TL; DR:
確保您沒有用戶登錄超過24小時,如果您已登錄,請斷開連接,然后重新連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM