使用Parse Twitter/Facebook身份验证注销或切换帐户

Kha*_*los 9 authentication twitter android facebook parse-platform

我正在使用parse.com的Android API并添加了Facebook/Twitter登录支持.这工作正常.

棘手的部分似乎正在退出.

如果我使用Twitter登录我的应用程序:

ParseTwitterUtils.logIn(UserLoginActivity.this, twitterLoginCallback);
Run Code Online (Sandbox Code Playgroud)

或使用Facebook:

ParseFacebookUtils.logInWithReadPermissionsInBackground(UserLoginActivity.this, null, facebookLoginCallback);
Run Code Online (Sandbox Code Playgroud)

我在网络对话框中提示输入我的Twitter凭据,然后允许或拒绝访问我的应用程序.一旦我允许它,我能够成功登录,并且我可以访问我的屏幕名称.一切都很好!

当我尝试登录我的ParseUser的,我确实会退出.但是,如果我再次单击Facebook或Twitter登录按钮,我会预先验证为我之前的帐户,我无法切换帐户.

我试过了:

  • 检查Chrome和浏览器,但都没有登录Twitter.
  • 退出原生Twitter/Facebook应用程序

我的登录逻辑简单地开始:

ParseUser.logOut();
Run Code Online (Sandbox Code Playgroud)

对于Twitter,我尝试过

  • 卸载我的应用程序 - 这确实解决了它,但不是一个理想的解决方案.
  • Parse.enableLocalDatastore(this);按照我的Application建议打电话:https://stackoverflow.com/a/26338326/494356
  • 按照此处的建议取消链接Twitter帐户:https://stackoverflow.com/a/34052718/494356.这也有每次创建一个新的ParseUser的坏副作用(但仍然是相同的Twitter帐户)
  • 我尝试将权限从"只读"更改为"读写",如/sf/answers/1939991161/所示.(为什么这对我来说无关紧要对我没有意义)
  • 我试过将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,我仍然可以使用保存的凭据登录.

我真的很感激任何答案或建议.即使你只能回答推特或Facebook,但两者都不能回答,我仍然希望听到它.

Ste*_*ack 1

在我们的应用程序中,登录/注销过程适用于 Facebook、电子邮件甚至自己构建的谷歌登录。我可以告诉你我第一眼看到的差异,也许其中一个对你有用。

首先,我们不ParseUser直接在代码中使用实例,而是有一个MyUser扩展的类ParseUser。其次,登录逻辑封装在后台服务中,而不是直接在我们的活动中调用。这可能无法解决问题。但在后台服务中,我们还缓存该MyUser实例,在需要时检索它,并使用该实例注销用户 ( MyUser.logOut())。并且设置null为注销后。

最后但并非最不重要的一点是:您是否正在运行最新版本的 Parse SDK?