我在Android中使用Firebase数据库向我的用户显示他们的状态,当我的服务启动它连接到数据库并听取更改并在开始时工作正常,电话重启或一段时间后我得到日志如下所述的错误,并且没有与DB的连接。我在S7上测试时遇到这个问题,在S5中我没有遇到这个问题。 我看到,对于这个错误,解决方案是使用监听器FirebaseAuth.AuthStateListener替换FirebaseAuth.getInstance()。getFirebaseUser(),但它没有帮助解决问题。
错误:
PersistentConnection:pc_0 - 提供的身份验证凭据 无效。这通常表示您的FirebaseApp实例不是 正确初始化。确保您的google-services.json文件有 正确的firebase_url和api_key。你可以重新下载 来自https://console.firebase.google.com/的google-services.json。
由于
public void listenToDbChanges() {
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(FirebaseAuth firebaseAuth) {
Logger.d(TAG, "Auth");
listenToDbChangesStart(firebaseAuth);
}
};
FirebaseAuth.getInstance().addAuthStateListener(mAuthStateListener);
}
FirebaseAuth.AuthStateListener mAuthStateListener = null;
/**
* Called when FirebaseUser listener had return the user
*/
private void listenToDbChangesStart(FirebaseAuth firebaseAuth) {
if (firebaseAuth == null) {
Logger.e(TAG, "firebaseAuth is null ignore");
return;
}
FirebaseAuth.getInstance().removeAuthStateListener(mAuthStateListener);
if (isListeningToDb) {
Logger.d(TAG, "Already listening to db");
return;
}
final FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
DatabaseReference userRef = null;
if (firebaseUser != null) {
String path = getPathOfDB(firebaseUser);
Logger.d(TAG,"Path is:"+path);
userRef = database.getReference(path);
if (userRef != null) {
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Logger.d(TAG, "onDataChange");
// READ
}
}
}