10

更新我的項目Firebase SDK後,我發現我的應用程序經常失去與Firebase數據庫的連接。從幾分鐘到一小時之間斷開連接的時間。一旦斷開連接,應用程序將不會重新連接,直到我已註銷或清除應用程序數據。更新到新SDK後失去與Firebase數據庫的連接

而且之前,我失去了聯繫,在日誌狀態的條目,我的身份驗證令牌已過期:

PersistentConnection:pc_0 - 身份驗證令牌撤銷:(身份驗證令牌已過期)expired_token

僅供參考,即時通訊使用Twitter和Facebook進行身份驗證,並且在之前的Firebase SDK中未遇到此類問題。

我創建了一個新項目(使用簡單的認證和實時數據庫)來查看問題是否存在並且是否存在。我隨信附上了新項目的片段:

的build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.sample.gideon.test" 
     minSdkVersion 17 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:support-v4:23.4.0' 
    compile 'com.facebook.android:facebook-android-sdk:4.12.0' 
    compile 'com.google.firebase:firebase-database:9.0.0' 
    compile 'com.google.firebase:firebase-auth:9.0.0' 
    compile 'com.android.support:design:23.4.0' 
} 

apply plugin: 'com.google.gms.google-services' 

認證活動遵循火力Facebook登錄指南,這的確成功登錄用戶,並把它們發送到MainActivity然後用下面的代碼監視數據庫連接:

MainActivity

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected"); 
    connectedRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      boolean connected = snapshot.getValue(Boolean.class); 
      if (connected) { 
       System.out.println("connected"); 
      } else { 
       System.out.println("not connected"); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError error) { 
      System.err.println("Listener was cancelled"); 
     } 
    }); 

有人會知道是什麼導致應用程序失去連接?到目前爲止,在2個具有2個身份驗證提供程序(Twitter和Facebook)的不同項目中經歷了錯誤,並且僅在更新到新的Firebase之後。

+0

嗨!男士們!我們正在研究它!看起來最好通過向[支持](https://firebase.google.com/support/)提交錯誤來追蹤此問題。 – Kato

+0

@Kato謝謝。我會提交一份報告並附上此頁供參考。 –

+1

我可以使用電子郵件/密碼認證與firebase - *:9.0.0進行確認。 並且還使用firebase-server-sdk:3.0.0,在這種情況下,身份驗證將遵循serviceAccountCredentials.json文件。 在兩段時間沉默之後(幾個小時),日誌都會顯示幾條消息:「PersistentConnection ...」。這很奇怪,因爲在服務器中我甚至不啓用持久性。 – rmarau

回答

5

Firebase修復了9.0.2版本的連接問題。對於仍然有問題的人來說,我發現this page的答案非常有用。尤其是the troubleshoot guide由firebase團隊爲更新至9.0.2後仍然遇到身份驗證令牌問題的人員製作的。