更新到新的SDK后,失去与Firebase数据库的连接

更新我的项目Firebase SDK后,我注意到我的应用程序经常失去与Firebase数据库的连接。 从几分钟到一个多小时的时间,将需要花费时间。 一旦断开连接,应用程序将不会重新连接,直到我已经注销或清除应用程序数据。

同样在丢失连接之前,日志中的条目指出我的身份validation令牌已过期:

PersistentConnection:pc_0 – authentication令牌被吊销:expired_token(authentication令牌已过期)

仅供参考,即时通讯使用Twitter和Facebook进行身份validation,而且以前的Firebase SDK没有遇到此类问题。

我创build了一个新的项目(使用简单的身份validation和实时数据库)来查看问题是否持续存在。 我附上了这个新项目的片段:

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' 

身份validation活动遵循firebase的facebooklogin指南,确实成功地将用户login并发送给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个validation提供者(twitter和facebook),只有在更新到新的Firebase之后才会出现错误。

Solutions Collecting From Web of "更新到新的SDK后,失去与Firebase数据库的连接"

Firebase使用9.0.2版本修复了连接问题。 对于任何人仍然有麻烦,我发现在这个页面上的答案非常有用。 尤其是对于那些在更新到9.0.2之后仍然遇到身份validation令牌问题的firebase团队所生成的疑难解答指南 。