我有一个应用程序(用Swift编写),它使用Parse,并允许用户创建帐户。我希望用户可以选择删除他们的帐户,但似乎找不到它,也不确定我做错了什么。我希望用户必须验证他们的电子邮件和密码才能发生这种情况。一旦他们删除了自己的账户,就会弹出一个警报,一旦用户解除了警报,他们就会回到登录屏幕并退出应用程序。
这是我尝试过的:
@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")
}
})
}
}发布于 2016-01-07 15:18:05
您可以创建一个云函数来验证用户是否正确输入了其当前密码,并让它向iOS返回成功/错误,然后您可以删除该帐户(前提是密码检查成功完成)。这是一个relevant Parse forum post。
来自引用的帖子:
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 (即,不将用户作为参数传递),因此它仅适用于具有会话的用户。
发布于 2016-06-18 17:02:34
你最初的if语句:
if PFUser.currentUser()?.username == emailAddressTextField.text && PFUser.currentUser()?.password == passwordTextFieldOne.text && PFUser.currentUser()?.password == passwordTextFieldTwo.text语句PFUser.currentUser()?.password将返回nil,因为解析不会使您能够访问用户密码。因此,您将无法将用户的密码与文本字段中输入的文本进行比较。
要检查用户是否确实输入了与现有密码匹配的密码,请执行以下操作:
PFUser.logInWithUsernameInBackground(PFUser.currentUser(), password:passwordTextFieldOne.text!) {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
//continue with delete function
} else {
//Display error
}
}https://stackoverflow.com/questions/34646169
复制相似问题