2013-11-10 52 views
3

如何從Android的Parse User類中刪除整行?我希望用戶能夠從我的應用程序中刪除他們的帳戶,如果他們刪除了他們的帳戶,我希望能夠刪除他們的整個用戶行。從Parse類中刪除整行

回答

4

呼叫的用戶對象的刪除方法之一:delete()deleteEventually()deleteInBackground()

實施例:

ParseUser user = ParseUser.getCurrentUser(); 
user.deleteInBackground(); 

的ParseUser類是的parseObject的一個子類,因此具有所有相同的刪除方法。您可以查看API參考here瞭解更多信息。

1

我想我會爲需要刪除用戶的情況稍有不同的情況提供額外的反饋。我使用Eric Amorde給出的答案作爲起點,但是我在運行測試時必須刪除用戶。基本目標是在用戶註冊後從解析數據庫中刪除用戶。這使我無需每次進行測試時都必須進入並刪除用戶。我最初使用上面的代碼Eric Amorde發佈了一個靜態方法,但沒有得到任何結果。由於我在後臺註冊過程中創建了用戶,我不得不在後臺刪除用戶。其他人可能會知道我應該使用的更好的方式,但下面是代碼片段,其中包括我在線程在後臺工作時所做的所有操作。

user.signUpInBackground(new SignUpCallback() { 
       @Override 
       public void done(ParseException e) { 
        dlog.dismiss(); 
        if (e != null) { 
         /** 
         * Show the error message 
         */ 
         Toast.makeText(RegisterActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); 
        } else { 
         /** 
         * Start a new intent for the dispatch activity 
         */ 
         Intent intent = new Intent(RegisterActivity.this, DispatchActivity.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
         RegisterActivity.this.startActivity(intent); 

         /** 
         * Check to see if the username is ParseUser and immediately deletes from 
         * Parse database to allow repeated runs of the RegisterActivityEspressoTest 
         */ 
         if(etUsername.getText().toString().equals("ParseUser")){ 
          ParseUser registerTestUser = new ParseUser(); 
          registerTestUser.getCurrentUser().deleteInBackground(); 
         } 
        } 
       } 
      }); 
0

由於無法在刪除方法後註銷/清除本地數據存儲,因此接受的答案可能會產生錯誤。

1)根據Parse的文檔,delete()並不總是足以刪除和註銷用戶。有時候,即使在delete()調用之後,用戶仍然通過本地數據存儲區登錄,導致下次用戶打開應用程序時出現錯誤(或者下次應用程序使用getCurrentUser()方法檢查當前用戶時。相反,註銷必須在刪除功能這樣的回調被稱爲:

ParseUser currentUser = ParseUser.getCurrentUser(); 
currentUser.deleteInBackground(new DeleteCallback() { 
       public void done(ParseException e) { 
        if (e == null) { 
         currentUser.logOutInBackground();  
        } else { 
         //handle the error 
        } 
       } 
      }); 

這是違反直覺的,因爲你會覺得你不應該退出,如果該帳戶已被刪除,但你

2)另外值得注意的是,刪除只能在用戶通過身份驗證(使用login(),註冊()或getCurrentUser()API調用)時調用。從Parse文檔: 具體而言,除非ParseUser是使用經身份驗證的方法(如logIn或signUp)獲得的,否則無法調用任何保存或刪除類型的方法。這確保只有用戶可以改變他們自己的數據。