2013-11-27 2 views
1

Я несколько раз играл с Parse на Android в течение нескольких дней, у меня проблема с ParseUser.logOut() => на самом деле это не войдите в текущий пользователь.Parse для Android: ParseUser.logOut() не регистрирует пользователя

Вот что я делаю:

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

После вызова ParseUser.logOut(), ParseUser.getCurrentUser() должен возвращать нуль (говорит документацию). Тем не менее он возвращает ранее зарегистрированного пользователя. Несмотря на то, что я перезапускаю приложение, пользователь по-прежнему считается подключенным.

Я использую схему разбора v1.3.8 (скачан 3 дня назад). Я не использую Facebook SDK, так как я видел несколько вопросов для этого конкретного случая.

Заранее спасибо

+0

вы уверены, что это нуль? – njzk2

+0

см. Https://www.parse.com/questions/issues-with-parseuserlogout-on-android – njzk2

+0

Является ли ваш тост показом? –

ответ

0

Try

ParseUser.getCurrentUser().logOut(); 
+0

То же самое –

+0

Спасибо Kaypey, но это тоже не сработало. Кроме того, logOut() является статическим методом, не имеет никакого значения называть его непосредственно в экземпляре. – daffycricket

+0

Точно такая же вещь –

1

Как я уже говорил в комментариях выше, я получил его на работу по:

  1. деинсталлировать приложение
  2. удаление пользователя на панель управления Parse
  3. переустановка приложения и его регистрация снова

Затем механизм вывески/сигнала работал чудесным образом: |

Единственная причина, по которой я могу себе представить, - это то, что я зарегистрировался с этим пользователем с . Автоматическое создание пользователя включено, и оно каким-то образом привязано к пользовательскому объекту в Parse.

3

Где-то в вашем приложении, вероятно, AppDelegate вы, скорее всего, отправить это сообщение PFUserClass

[PFUser enableAutomaticUser]; 

в этом случае

[PFUser currentUser]; 

никогда не будет возвращать ноль;

1

Испытывая ту же ошибку. Теперь вместо того, чтобы проверять только ParseUser как null, я также проверю имя пользователя:

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

, поэтому вы можете сказать: if (crntUser! = Null && crntUser.getUsername()! = Null) {// пользователь существует} else {// пользователь не существует} – Hatim

+0

@Hatim Звучит правильно. – berserk

0

У меня была та же проблема. На самом деле это была ошибка в parse sdk, и проблема была решена без изменения какого-либо из моего кода, просто установив последнюю версию синтаксиса sdk (1.8.1 на момент написания).

3

У меня была такая же проблема, в то время как была включена функция выхода из системы с помощью входа в facebook. Ошибка оказалась довольно простой и основной ошибкой с моей стороны. Я написал следующий фрагмент кода в своем классе приложения

ParseUser.enableAutomaticUser();

Это создает пользователя при каждом запуске приложения, даже если вы вышли из системы в последний раз. Устранение этой проблемы решило мою проблему.

0

Попробовать отключал текущий пользовательский объект, а не класс ,

ParseUser.getCurrentUser().logout(); 

и убедитесь, что для удаления

ParseUser.enableAutomaticUser(); 

Edit: Когда вы выйти из системы, то экземпляр пользователя будет по-прежнему доступны, но с нулевыми полями. Parse изменяет все поля пользователя на null.

Итак, если вы хотите, чтобы проверить, является ли зарегистрирован пользователь или вне, просто сделайте следующее

if(ParseUser.getCurrentUser().getUsername() == null) 
{ // user is out 
} else { 
// user is in } 
Смежные вопросы