10

Dopo l'aggiornamento dei miei progetti Firebase SDK, ho notato che la mia app perdeva regolarmente la connessione con il database di Firebase. Il tempo necessario per la disconnessione va da pochi minuti a poco più di un'ora. Una volta scollegata, l'app non si ricollega fino a quando non ho disconnesso o cancellato i dati dell'app.Perdita della connessione con il database Firebase dopo l'aggiornamento al nuovo SDK

Inoltre proprio prima che perda la connessione, una voce negli stati di registro che il mio auth token è scaduto:

PersistentConnection: pc_0 - Auth Token revocato: (. Auth token è scaduto) expired_token

FYI, sto usando Twitter e Facebook per la mia autenticazione e non ho riscontrato problemi simili con il precedente SDK di Firebase.

Ho creato un nuovo progetto (con semplice autenticazione e database in tempo reale) per vedere se il problema persiste e lo fa. Ho allegato frammenti di quel nuovo progetto:

Il 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' 

L'attività di autenticazione segue la guida facebook login Firebase, che anzi registra con successo l'utente e li invia al MainActivity che poi controlla la connessione al database utilizzando il seguente codice:

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"); 
     } 
    }); 

Qualcuno sa che cosa causa l'interruzione della connessione? Finora l'errore è stato sperimentato in 2 diversi progetti con 2 provider di autenticazione (twitter e facebook) e solo dopo l'aggiornamento al nuovo Firebase.

+0

Ciao signori! Ci stiamo guardando! Sembra che questo sia meglio monitorato inviando un bug a [support] (https://firebase.google.com/support/) – Kato

+0

@Kato Grazie. Presenterò un rapporto e allego questa pagina per riferimento. –

+1

Posso confermarlo usando l'autenticazione email/password con firebase - *: 9.0.0. E anche utilizzando firebase-server-sdk: 3.0.0, nel qual caso l'autenticazione segue il file serviceAccountCredentials.json. In entrambi i casi dopo un periodo di silenzio (un paio d'ore) i registri mostrano diversi messaggi come "PersistentConnection ...". Il che è strano perché nel server non ho nemmeno abilitato la persistenza. – rmarau

risposta

5

Firebase ha risolto il problema di connessione con il rilascio di 9.0.2. Inoltre, per chiunque abbia ancora problemi, ho trovato la risposta su this page molto utile. Soprattutto lo the troubleshoot guide prodotto dal team di Firebase per coloro che hanno ancora problemi con i token di autenticazione dopo l'aggiornamento alla 9.0.2.

Problemi correlati