更新我的項目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之後。
嗨!男士們!我們正在研究它!看起來最好通過向[支持](https://firebase.google.com/support/)提交錯誤來追蹤此問題。 – Kato
@Kato謝謝。我會提交一份報告並附上此頁供參考。 –
我可以使用電子郵件/密碼認證與firebase - *:9.0.0進行確認。 並且還使用firebase-server-sdk:3.0.0,在這種情況下,身份驗證將遵循serviceAccountCredentials.json文件。 在兩段時間沉默之後(幾個小時),日誌都會顯示幾條消息:「PersistentConnection ...」。這很奇怪,因爲在服務器中我甚至不啓用持久性。 – rmarau