2016-06-03 13 views
6

bu sorunu yaşadı mı? Firebase kodum sadece birkaç saat (tamamen işlevsel ve hepsi) için çalışıyor ve tekrar denediğimde artık çalışmıyor. Bunu arıyorum nasıl kod aşağıda verilmiştir:Firebase addValueEventListener sadece birkaç saat çalışan

 ValueEventListener valueEventListener = new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Log.e(TAG, "onDataChange: Job found"); 
       for (DataSnapshot jobSnapShot : dataSnapshot.getChildren()) { 
        Log.e(TAG, "onDataChange: Job +1"); 
        Job job = jobSnapShot.getValue(Job.class); 
        // Add the ID into the job 
        job.setId(dataSnapshot.getKey()); 

        // Set the job 
        arrayList.add(job); 
        subscriber.onNext(job); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       Log.e(TAG, "onCancelled: " + databaseError.getMessage()); 
      } 
     }; 
     Log.e(TAG, "call: id:" + userId + ", reference:" + FirebaseDatabase.getInstance().getReference().toString()); 
     Log.e(TAG, "call: Calling Jobs..."); 
     FirebaseDatabase.getInstance() 
       .getReference() 
       .child(context.getString(R.string.firebase_jobs)) 
       .child(userId). 
       addValueEventListener(valueEventListener); 

hatları:

Log.e(TAG, "call: id:" + userId + ", reference:" + FirebaseDatabase.getInstance().getReference().toString()); 
    Log.e(TAG, "call: Calling Jobs..."); 

her seferinde yürütün. UserId ve getReference, doğru değerleri döndürür. Ancak addValueEventListener, birkaç saat sonra dinleyiciyi ekliyor gibi görünmüyor. Bunu düzeltmenin tek yolu, çıkış yapmak ve tekrar oturum açmaktır.

DÜZENLEME:

Benim auth devlet dinleyici kodu: firebaseAccount yılında

firebaseAccount = getFirebaseAccount(); 
firebaseAccount.getAuth().addAuthStateListener(firebaseAccount.getAuthListener()); 

: Bu sorun Firebase Auth kaynaklanır

public FirebaseAuth.AuthStateListener getAuthListener() { 
    return authStateListener; 
} 

FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() { 
    @Override 
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
     FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); 
     if (firebaseUser != null) { 
      String id = firebaseUser.getUid(); 
      // User is signed in 
      Log.e(TAG, "onAuthStateChanged: Signed in as " + id); 
      // Start loginActivity when signed in 
      loginActivity.onLoginSuccess(id); 
     } else { 
      // User is not signed in 
      Log.e(TAG, "onAuthStateChanged: Signed out"); 

      // User probably logged out. Finish the loginActivity and launch the login screen 
     } 
    } 
}; 
+0

Kimlik doğrulama kullanıyor musunuz? – Ymmanuel

+0

Yup, kullanıcının oturum açtığını doğrulayabilirim ve oturum açmış kullanıcı kimliklerini geri alabiliyorum. – lawonga

+0

Çok uzun bir mesaj alıyorum: background_crash V/GoogleSignatureVerifier: com.google.android.gms imza geçerli değil. Bulunan:. MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMw EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29n .... – lawonga

cevap

14

düzgün kendilerini yenilenmiyor jetonudur, kendisi neden olur Firebase projenizdeki temel bir yanlış yapılandırma ile.

belirtecinin yenilenmesi aşağıdaki parçacığını arayarak başarısız eğer bir kullanıcı oturum açtıktan sonra anlayabilirsiniz:

FirebaseUser user = mAuth.getCurrentUser(); // mAuth is your current firebase auth instance 
user.getToken(true).addOnCompleteListener(this, new OnCompleteListener<GetTokenResult>() { 
    @Override 
    public void onComplete(@NonNull Task<GetTokenResult> task) { 
     if (task.isSuccessful()) { 
      Log.d(TAG, "token=" + task.getResult().getToken()); 
     } else { 
      Log.e(TAG, "exception=" +task.getException().toString()); 
     } 
    } 
}); 

(bir sorun varsa, bir istisna alacak).

Bu soruna neden olabilecek yapılandırma sorunlarını gidermek ve gidermek için Firebase ekibinde bir araya getirdiğimiz this guide'u takip edebilirsiniz.

Yukarıdaki adımlar, sorun için kalıcı bir düzeltme olmalı, ancak, yanlış yapılandırmaların otomatik olarak algılanması ve bunları sizin için şeffaf bir şekilde düzeltmenin bir yolunu uygulamak için de çok çalışıyoruz. Herhangi bir sorun için özür dilerim bu neden olabilir.

İlgili konular