![](/img/trans.png)
[英]Parse: PFUser signUpInBackgroundWithBlock causing exception when trying to convert anonymous user to regular
[英]PFUser fails when re-trying signUp with anonymous user (iOS) - Answer (Parse Bug solved this way)
https://www.parse.com/questions/pfuser-fails-when-re-trying-signup-with-anonymous-user-ios
总而言之,如果匿名用户尝试注册并输入已经存在的用户名,则不允许他们使用新的用户名进行注册。 在这意味着启用匿名用户的代码中:
PFUser *user = [PFUser currentUser];
user.username = @"existing_username_in_users_table";
user.password = @"password";
[user signUp]; // this fails with Error: username existing_username_in_users_table already taken (Code: 202, Version: 1.2.19)
user.username = @"unique_username";
[user signUp]; //
失败并显示错误:无法注册已经注册的用户。 (代码:202,版本:1.2.19)是否有解决此问题的建议? 如错误所示,我正在使用Parse 1.2.19,它似乎是最新的。
pasrse的答案是:听起来像个bug。 您可以使用错误工具打开新报告吗?
* //要使所有用户在“忘记密码”部分中检查是否为有效用户
-(void)checkForTheExistingUsersAndSignup
{
NSString *usernameString = [userNameTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *passwordString = [passwordTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *emailString = [emailTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
//To check validations
if ([usernameString length] == 0)
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter Username" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[userNameTextField becomeFirstResponder];
}
else if ([emailString length] == 0)
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter Email ID" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[emailTextField becomeFirstResponder];
}
else if ([passwordString length] == 0)
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter Password" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[passwordTextField becomeFirstResponder];
}
else if(! [self validateEmail:emailTextField.text])
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter valid Email ID" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[emailTextField becomeFirstResponder];
}
else //If satisfied all validations
{
PFQuery *query= [PFUser query]; //query for users
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
if (!error)
{
UserArrayObjects = objects;
BOOL isUserExist = NO;
for (PFObject *userObject in UserArrayObjects)
{
if([userNameTextField.text isEqualToString:[userObject objectForKey:@"username"]] || [userNameTextField.text isEqualToString:[userObject objectForKey:@"email"]] )
{
isUserExist = YES;
break;
}
}
if(!isUserExist)
{
[self signupNewUser];
}
else
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Signup failed! \nSomeone already has that username or email." delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
}
}
else
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"No network connection" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
}
}];
}
}
//提交手势
- (void)signupNewUser
{
{
{
NSString *usernameString = [userNameTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *passwordString = [passwordTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *emailString = [emailTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
//To check validations
if ([usernameString length] == 0)
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter Username" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[userNameTextField becomeFirstResponder];
}
else if ([emailString length] == 0)
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter Email ID" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[emailTextField becomeFirstResponder];
}
else if ([passwordString length] == 0)
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter Password" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[passwordTextField becomeFirstResponder];
}
else if(! [self validateEmail:emailTextField.text])
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Enter valid Email ID" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
[emailTextField becomeFirstResponder];
}
else //If satisfied all validations
{
PFUser *user ;
if (skipUser)
user = [PFUser currentUser];
else
user= [PFUser user];
user.username = usernameString;
user.password = passwordString;
user.email = emailString;
[user setObject:@"regular" forKey:@"user_type"];
//Signup in background
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error)
{
if (!error)
{
if(skipUser)
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Your anonymous account been merged with this user. Continue with more GGacts!" delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
NewDeedViewController * newDeed = [[NewDeedViewController alloc] init];
[self.navigationController pushViewController:newDeed animated:YES];
}
else
{
[ReusedMethods ShowAllertWithTitle:@"app name" message:@"Signup failed! \nSomeone already has that username or email." delegate:nil cancelTitle:@"OK" otherTitle:nil tag:0];
}
}];
}
}
}
}
*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.