Я использую API Android parse.com и добавил поддержку входа в систему Facebook / Twitter. Это работает нормально.
Кажется, что сложная часть выходит из системы .
Если я войду в мое приложение с помощью Twitter:
ParseTwitterUtils.logIn(UserLoginActivity.this, twitterLoginCallback);
Или используя Facebook:
ParseFacebookUtils.logInWithReadPermissionsInBackground(UserLoginActivity.this, null, facebookLoginCallback);
Мне предлагается в веб-диалоге ввести мои учетные данные Twitter, а затем разрешить или запретить доступ к моему приложению. Как только я разрешаю это, я могу войти в систему успешно, и у меня есть доступ к моему имени экрана. Все хорошо!
Когда я пытаюсь выйти из своего ParseUser, я выхожу из системы. Однако, если я снова нажму кнопку входа в Facebook или Twitter, я предварительно аутентифицирован как моя предыдущая учетная запись, я не могу переключать учетные записи.
Я пытался:
Моя логическая логика началась как просто:
ParseUser.logOut();
Parse.enableLocalDatastore(this);
В моем Application
как предлагается здесь: https://stackoverflow.com/a/26338326/494356 null
ParseTwitterUtils.getTwitter().setAuthToken(null);
ParseTwitterUtils.getTwitter().setAuthTokenSecret(null);
Использование функций выхода из системы Facebook SDK:
AccessToken.setCurrentAccessToken(null);
Profile.setCurrentProfile(null);
LoginManager.getInstance().logOut();
Раньше здесь использовался Session.closeAndClearTokenInformation()
. Но Facebook устарел на класс Session, и он больше не находится в SDK.
Я был бы очень признателен за любые ответы или предложения. Даже если вы можете отвечать только за Twitter или Facebook, но не с обоими, я все равно хотел бы это услышать.
В нашем приложении процесс входа / выхода из системы работает отлично для Facebook, E-Mail и даже собственного входа в систему google. Я могу рассказать вам о различиях, которые я вижу при первом взгляде, и, возможно, один из них делает трюк для вас.
Прежде всего, мы не работаем с экземпляром ParseUser
непосредственно в нашем коде, но имеем класс MyUser
который расширяет ParseUser
. Во-вторых, логика входа в систему инкапсулирована в фоновом режиме и не вызывается непосредственно в нашей деятельности. Вероятно, это не решит проблему. Но в фоновом режиме мы также MyUser
экземпляр MyUser
, извлекаем его, если нам это нужно, и используем этот экземпляр для выхода из системы ( MyUser.logOut()
). И после выхода из системы он имеет значение null
.
И последнее, но не менее важное: вы используете последние версии Parse SDK?