So a PFUser will log in the traditional way, using an email and password. When they sign up, I set the userName to be equal to the email address. When a user signs in, they use their email.
This was working great until I added a "connect to facebook" button where I call the following:
[PFFacebookUtils linkUserInBackground:[PFUser currentUser] withReadPermissions:@[@"public_profile", @"user_friends"] block:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"Woohoo, user is linked with Facebook!");
[self.tableView reloadData];
}
}];
The problem is, when this succeeds, my username has changed to a long string of random characters. Which means if I log out, I can no longer log back in because the email no longer matches the username.
I am using parse-server on Heroku. I won't post any cloud code because this didn't start happening until I implemented Facebook oauth.
You have to query for the user using their email. Once you've returned the user object get the username by using
user.username
. Once you have their username you can log them in withloginWithUsernameInBackground
. It seems like the long way around an easy thing but that's how you do it.