0

我正在使用firebaseUser授權使用Firebase數據庫。我成功地從應用程序中註銷用戶,但是當我註銷用戶時,應用程序因爲Firebase數據庫引用而崩潰。我得到logcat消息顯示如何從Firebase數據庫註銷用戶?

This client does not have permission to perform this operation. 

如何從Firebase數據庫註銷用戶?

+0

爲什麼你想退出?如果你這樣做,那麼你必須要求你的用戶再次登錄,然後執行數據庫操作。 「此客戶沒有執行此操作的權限。」 - 如果用戶有多個帳戶,則用戶需要註銷選項,您正在嘗試訪問未通過身份驗證或註銷的數據庫 –

+0

@TGMCians。在我的應用程序中,我希望註銷選項 – Dhanumjay

+0

您的意思是您的設備上已配置多個gmail帳戶,並且您想嘗試使用不同的帳戶? –

回答

0

我將ValueEventListener添加到firebase數據庫引用,當我試圖註銷用戶時ValueEventListener仍然在後臺運行,這就是爲什麼我的應用程序崩潰。

我從Firebase數據庫引用中刪除了ValueEventListener,並解決了我的問題。

3

您不會從「數據庫」註銷,而是從FirebaseAuth.getInstance().signOut()從Firebase註銷。

之後,用戶無法訪問需要用戶憑證的數據庫部分,我想這就是您的應用程序崩潰的原因。所以當你進行數據庫調用時,你需要檢查用戶是否有正確的憑證。

1

MainActivity.java

private void logout(){ 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); 
     alertDialogBuilder 
       .setTitle("Message") 
       .setMessage("Message") 
       .setCancelable(true) 
       .setPositiveButton("Message",new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog,int id) { 
         FirebaseAuth.getInstance().signOut(); 
         Intent intent = new Intent(MainActivity.this, MainActivity.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
        } 
       }) 
       .setNegativeButton("Message",new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog,int id) { 
         dialog.dismiss(); 
        } 
       }); 
     final AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 

     TextView pesan = (TextView) alertDialog.findViewById(android.R.id.message); 
     pesan.setTextSize(15); 

     Button b = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
     b.setTextColor(getResources().getColor(R.color.colorPrimary)); 

     Button c = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
     c.setTextColor(getResources().getColor(R.color.colorHitam)); 
    } 
+0

你的回答無法解決這個問題中提到的問題。 – Aashish