Выйти или сменить учетные записи, используя аутентификацию Parse Twitter / Facebook

Я использую API Android parse.com и добавил поддержку входа в систему Facebook / Twitter. Это работает нормально.

Кажется, что сложная часть выходит из системы .

Если я войду в мое приложение с помощью Twitter:

ParseTwitterUtils.logIn(UserLoginActivity.this, twitterLoginCallback); 

Или используя Facebook:

 ParseFacebookUtils.logInWithReadPermissionsInBackground(UserLoginActivity.this, null, facebookLoginCallback); 

Мне предлагается в веб-диалоге ввести мои учетные данные Twitter, а затем разрешить или запретить доступ к моему приложению. Как только я разрешаю это, я могу войти в систему успешно, и у меня есть доступ к моему имени экрана. Все хорошо!

Когда я пытаюсь выйти из своего ParseUser, я выхожу из системы. Однако, если я снова нажму кнопку входа в Facebook или Twitter, я предварительно аутентифицирован как моя предыдущая учетная запись, я не могу переключать учетные записи.

Я пытался:

  • Проверка Chrome и браузера и ни один из них не вошли в Twitter.
  • Выход из собственного приложения Twitter / Facebook

Моя логическая логика началась как просто:

 ParseUser.logOut(); 

Для Twitter я пробовал

  • Удаление моего приложения – это исправление, но не идеальное решение.
  • Не вызывать Parse.enableLocalDatastore(this); В моем Application как предлагается здесь: https://stackoverflow.com/a/26338326/494356
  • Отвязывание учетной записи Twitter, как предлагается здесь: https://stackoverflow.com/a/34052718/494356 . Это также имеет плохой побочный эффект при создании нового ParseUser каждый раз (но все же для одной и той же учетной записи Twitter)
  • Я попробовал изменить разрешения с «Только для чтения» на «Чтение и запись», как предлагается здесь https://stackoverflow.com/a/27714159/494356 . (Почему это имеет значение, на самом деле это не имеет для меня никакого смысла)
  • Я попытался установить AuthToken на null ParseTwitterUtils.getTwitter().setAuthToken(null); ParseTwitterUtils.getTwitter().setAuthTokenSecret(null);

Для Facebook я пробовал

  • Удаление моего приложения – это не решает проблему.
  • Использование функций выхода из системы Facebook SDK:

    AccessToken.setCurrentAccessToken(null);

    Profile.setCurrentProfile(null);

    LoginManager.getInstance().logOut();

  • Раньше здесь использовался Session.closeAndClearTokenInformation() . Но Facebook устарел на класс Session, и он больше не находится в SDK.

  • Отключить учетную запись Facebook, как предлагается здесь . Опять же, это вызывает дублирование ParseUsers, и я все еще могу войти в систему, используя сохраненные учетные данные.

Я был бы очень признателен за любые ответы или предложения. Даже если вы можете отвечать только за Twitter или Facebook, но не с обоими, я все равно хотел бы это услышать.

В нашем приложении процесс входа / выхода из системы работает отлично для Facebook, E-Mail и даже собственного входа в систему google. Я могу рассказать вам о различиях, которые я вижу при первом взгляде, и, возможно, один из них делает трюк для вас.

Прежде всего, мы не работаем с экземпляром ParseUser непосредственно в нашем коде, но имеем класс MyUser который расширяет ParseUser . Во-вторых, логика входа в систему инкапсулирована в фоновом режиме и не вызывается непосредственно в нашей деятельности. Вероятно, это не решит проблему. Но в фоновом режиме мы также MyUser экземпляр MyUser , извлекаем его, если нам это нужно, и используем этот экземпляр для выхода из системы ( MyUser.logOut() ). И после выхода из системы он имеет значение null .

И последнее, но не менее важное: вы используете последние версии Parse SDK?