daffycricket
daffycricket

Reputation: 405

Parse for Android : ParseUser.logOut() doesn't log user out

I've been playing around with Parse on Android for a few days, I have a problem with ParseUser.logOut() => it actually doesn't log the current user out.

Here's what I do :

private void onClickOnDisconnect() {
    ParseUser.logOut();
    currentUser = ParseUser.getCurrentUser(); // should be null but isn't...
    invalidateOptionsMenu();
    Toast.makeText(getApplicationContext(), "Disconnected...", Toast.LENGTH_LONG).show();
}

After the call to ParseUser.logOut(), ParseUser.getCurrentUser() should return null (says the documentation). Still it returns the previously logged in user. Even though I restart the app the user is still considered as connected.

I use parse framework v1.3.8 (downloaded a 3 days ago). I don't use Facebook SDK, as I've seen a few questions for that specific case.

Thanks in advance

Upvotes: 1

Views: 7498

Answers (8)

Hatim
Hatim

Reputation: 1522

Try to logout the current user object, not the class.

ParseUser.getCurrentUser().logout();

and make sure to delete

ParseUser.enableAutomaticUser();

Edit: When you logout, the User instance will still available, but with null fields. Parse changes all the user's fields into nulls.

So, if you want to check whether the user is logged in or out, just do the following

if(ParseUser.getCurrentUser().getUsername() == null)
{ // user is out 
} else { 
// user is in }

Upvotes: 0

Aniruddha K.M
Aniruddha K.M

Reputation: 7521

I had the same issue it was because i has automatic user enabled which causes a new anonymous user to be created, it is also explained here
https://www.parse.com/questions/issues-with-parseuserlogout-on-android

Upvotes: 0

Akshay
Akshay

Reputation: 1020

I had the same issue while incorporating logout functionality with facebook login. The error turned out to quite simple and a basic mistake on my part. I had written the following piece of code in my Application class

ParseUser.enableAutomaticUser();

This creates the user every time you run your application even if you have logged out the last time around. Removing this solved my problem.

Upvotes: 3

marios-codes
marios-codes

Reputation: 159

I had the same problem. Actually it was a bug in parse sdk and the problem was solved without changing any of my code, just by installing the latest parse android sdk(1.8.1 at the time of writing).

Upvotes: 0

berserk
berserk

Reputation: 2728

Experiencing same bug. Now instead of only checking ParseUser as null, I check username too:

ParseUser currentUser=ParseUser.getCurrentUser()
if(currentUser==null)
        {
//user doesn't exist
        }
else
{
if(currentUser.getUserName()==null)
{
//user oesn't exist
}
}

Upvotes: 1

Zack Weiner
Zack Weiner

Reputation: 674

Somewhere in your app, probably the appDelegate you most likely send this message to the PFUserClass

[PFUser enableAutomaticUser];

in this case the

[PFUser currentUser];

will never return nil;

Upvotes: 3

daffycricket
daffycricket

Reputation: 405

As I said in the comments above, I got it to work by :

  1. uninstalling the app
  2. deleting the user on the Parse dashboard
  3. reinstalling the app and signing up again

Then the signout/signin mechanism worked miraculously :|

The only reason I can imagine is that I had previously signed up with this user having Automatic user creation enabled, and it somehow stuck to the user entity in Parse.

Upvotes: 1

KP_
KP_

Reputation: 1866

Try

ParseUser.getCurrentUser().logOut();

Upvotes: 0

Related Questions