Подтвердить что ты не робот

Потеря связи с базой данных Firebase после обновления до нового SDK

После обновления моих проектов Firebase SDK я заметил, что мое приложение регулярно теряет связь с базой данных firebase. Время, необходимое для отключения от нескольких минут до чуть более часа. После отключения приложение не будет повторно подключаться, пока я не выйду из системы или не удалю данные приложений.

Также, прежде чем я потеряю соединение, запись в журнале указывает, что мой токен аутентификации истек:

PersistentConnection: pc_0 - Аннулированный токен: expired_token (токен аутентификации истек.)

FYI, im используя Twitter и Facebook для моей аутентификации и не испытывал таких проблем с предыдущим SDK Firebase.

Я создал новый проект (с простой базой данных auth и реального времени), чтобы узнать, сохраняется ли проблема и что происходит. Я добавил фрагменты этого нового проекта:

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'

Действие проверки подлинности следует руководству пользователя фейсбука firebase, которое действительно успешно регистрирует пользователя и отправляет его в 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");
        }
    });

Кто-нибудь знает, что заставляет приложение потерять соединение? Пока что ошибка возникла в двух разных проектах с двумя провайдерами авторизации (twitter и facebook) и только после обновления к новой Firebase.

4b9b3361

Ответ 1

Firebase исправила проблему подключения с выпуском 9.0.2. Также для тех, у кого до сих пор возникают проблемы, я нашел ответ на этой странице очень полезным. Особенно руководство по устранению неполадок, созданное командой firebase для тех, кто по-прежнему испытывает проблемы с токеном аутентификации после обновления до 9.0.2.