Swift 删除用户帐户

Swift 删除用户帐户,swift,parse-platform,pfuser,Swift,Parse Platform,Pfuser,我有一个应用程序(用Swift编写),它使用解析并允许用户创建帐户。我希望用户可以选择删除他们的帐户,但似乎无法找出它,也不知道我做错了什么。我希望用户必须验证他们的电子邮件和密码,以实现这一点。一旦他们删除了自己的帐户,就会弹出一个警报,一旦用户解除警报,就会将他们带回登录屏幕并退出应用程序 这就是我尝试过的: @IBAction func deleteAccount(sender: AnyObject) { if PFUser.currentUser()?.username ==

我有一个应用程序(用Swift编写),它使用解析并允许用户创建帐户。我希望用户可以选择删除他们的帐户,但似乎无法找出它,也不知道我做错了什么。我希望用户必须验证他们的电子邮件和密码,以实现这一点。一旦他们删除了自己的帐户,就会弹出一个警报,一旦用户解除警报,就会将他们带回登录屏幕并退出应用程序

这就是我尝试过的:

   @IBAction func deleteAccount(sender: AnyObject) {

 if PFUser.currentUser()?.username == emailAddressTextField.text && PFUser.currentUser()?.password == passwordTextFieldOne.text && PFUser.currentUser()?.password == passwordTextFieldTwo.text {

 PFUser.currentUser()?.deleteInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in

            if success {

            let alertController = UIAlertController(title: "Success!", message: "Now Please Login", preferredStyle: .Alert)

            let enterAppAction = UIAlertAction(title: "OK", style: .Default, handler: { (UIAlertAction) -> Void in

                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Login")
                    self.presentViewController(viewController, animated: true, completion: nil)
                })
            })

                alertController.addAction(enterAppAction)

                self.presentViewController(alertController, animated: true, completion: nil)

            } else {

            print(error)
            self.displayAlert("Account deletion failed", message: "Please try again", actionTitle: "OK")

            }
        })
    }
}

您可以使用云功能验证用户是否正确输入了当前密码,并让其将成功/错误返回到iOS,此时您可以删除该帐户(前提是密码检查已成功完成)。这是一个例子

参考文章:

Parse.Cloud.define(FUNCTION_PASSWORD_CHECK, function(request, response) 
{
    var password = request.params.password;

    Parse.User.logIn(request.user.getUsername(), password, {
        success: function(results) 
        {   
            response.success(true);
        },
        error: function() {
            response.success(false);
        }
    });
}); 

注意:您可以在iOS上执行类似的登录功能,但如果用户输入的密码不正确(我对此不确定),则可能会影响PFUser.currentUser()。此外,引用的函数使用建议的request.user(即,也不要将用户作为参数传递),因此它仅适用于具有会话的用户。

初始if语句:

if PFUser.currentUser()?.username == emailAddressTextField.text && PFUser.currentUser()?.password == passwordTextFieldOne.text && PFUser.currentUser()?.password == passwordTextFieldTwo.text
语句
PFUser.currentUser()?.password
将返回nil,因为parse不会使您可以访问用户密码。因此,您将无法将用户密码与输入文本字段的文本进行比较

要检查用户是否实际输入了与现有密码匹配的密码,请执行以下操作:

PFUser.logInWithUsernameInBackground(PFUser.currentUser(), password:passwordTextFieldOne.text!) {
    (user: PFUser?, error: NSError?) -> Void in
    if user != nil {
         //continue with delete function   
    } else {
        //Display error
    }
}

你有错误吗?没有,我想这不是在读取PFUser.currentUser密码,因为当我打印出来时,它打印为零。这是有道理的,因为Parse保护他们的密码。我只是让它工作,所以用户可以删除他们的计数,但它不需要任何电子邮件或密码验证。他们只需点击一个按钮,它就会删除该帐户。我更喜欢验证。你能试着做一些像query.wherekey(email=PFUser.currentUser().email)这样的事情吗?然后做一个删除?我不记得查询的correcxt语法了。wherekey..谢谢这似乎是正确的选择。我以前没有使用过解析云函数,但我将学习它。这似乎引导我走上了正确的道路。