0

我正嘗試使用帶有電子郵件和密碼的Firebase身份驗證服務。我試圖做的事:失敗:FirebaseError:每次都拒絕權限

  1. 登錄用戶
  2. 後成功登錄,我想從火力地堡數據庫獲取數據。

得到日誌[onAuthStateChanged:signed_in: "xyz"]。之後登錄每次我得到許可被拒絕,並得到這個:

[W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found].

我的數據庫規則:

{ 
    "rules": { 
     "Person" :{ 
      ".read": "auth !== null", 
      ".write": "auth !== null" 
     } 
    } 
} 

我的代碼

private FirebaseAuth auth; 
private FirebaseAuth.AuthStateListener mAuthListener; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    auth = FirebaseAuth.getInstance(); 
    btnLogIn.setOnClickListener(onClickBtnLogIn); 

    mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 
       Log.d("TAG", "onAuthStateChanged:signed_in:" + user.getUid()); 

       final Firebase ref = new Firebase("https://firebaseapplink/Person"); 
       ref.addListenerForSingleValueEvent(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         Map<String, Object> userData = (Map<String, Object>) dataSnapshot.getValue(); 
         Log.d("TAG", "User Data :" + userData); 
        } 
        @Override 
        public void onCancelled(FirebaseError firebaseError) { 
         Log.d("TAG", firebaseError.getMessage()); // Permission Denied 

        } 
       }); 

      } else { 
       Log.d("TAG", "onAuthStateChanged:signed_out"); 
      } 
     } 
    }; 
} 



     View.OnClickListener onClickBtnLogIn = new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) { 
     final String Email = edtEmail.getText().toString().trim(); 
     final String Password = edtPwd.getText().toString().trim(); 

     auth.signInWithEmailAndPassword(Email, Password) 
       .addOnCompleteListener(abc.this, new OnCompleteListener<AuthResult>() 
       { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) 
        { 

         if (task.isSuccessful()) 
         { 
          Log.d("SignIn", "task"); 
         } 
         if (!task.isSuccessful()) 
         { 
          Log.d("SignIn", "task fail"); 
         } 
        } 
       }); 
    } 
}; 

@Override 
public void onStart() { 
    super.onStart(); 
    auth.addAuthStateListener(mAuthListener); 
} 

回答

1

您正在將舊版2.x SDK中的數據庫服務與新9.4.0 SDK中的FirebaseAuth混合使用。它們不兼容。從您的版本依賴關係中刪除compile com.firebase:firebase-client-android:2.x.x,替換爲編譯com.google.firebase:firebase-database:9.4.0,並使code change需要使用FirebaseDatabase

+0

以前已經回答過,可能是你自己。 :-)你可以找到一個愚蠢的和標記嗎? –

+0

@FrankvanPuffelen:重複http://stackoverflow.com/q/39319741/4815718 –

+0

謝謝@qbix!雖然封閉了這個問題,但在這裏也提出了你的答案。 :-) –

0

確保您在添加依賴關係爲您的build.gradle文件。

compile 'com.google.firebase:firebase-auth:9.4.0' 
+0

已經在使用9.4.0:編譯「com.google.firebase:firebase-auth:9.4.0」會得到「權限被拒絕」。 – Puja

+0

嘗試使用google-services.json,不要直接在您的java文件中使用Firebase,並確保您已在根目錄下的build.gradle文件中添加classpath'com.google.gms:google-services:3.0.0'項目。 –

+0

嘗試降級這樣的依賴項,編譯'com.google.firebase:firebase-auth:9.2.0' –

相關問題