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

时间:2015-12-05 05:22:48

标签: android facebook authentication twitter parse-platform

我正在使用parse.com的Android API并添加了Facebook / Twitter登录支持。这很好。

棘手的部分似乎是 退出

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

ParseTwitterUtils.logIn(UserLoginActivity.this, twitterLoginCallback);

或使用Facebook:

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

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

当我尝试记录ParseUser的 out 时,我确实退出了。但是,如果我再次点击Facebook或Twitter登录按钮,我已经预先验证为我之前的帐户,我无法切换帐户。

我试过了:

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

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

ParseUser.logOut();

对于推特,我试过

  • 卸载我的应用程序 - 这确实解决了它,但不是理想的解决方案。
  • 未按照此处建议Parse.enableLocalDatastore(this); Application调用nullhttps://stackoverflow.com/a/26338326/494356
  • 按照此处的建议取消关联Twitter帐户:https://stackoverflow.com/a/34052718/494356。这也有每次创建一个新的ParseUser的坏副作用(但仍然是针对相同的Twitter帐户)
  • 我尝试将权限从“只读”更改为“读取和写入”状态。正如https://stackoverflow.com/a/27714159/494356所述。 (为什么这对我来说并不重要?)
  • 我尝试将AuthToken设置为ParseTwitterUtils.getTwitter().setAuthToken(null); ParseTwitterUtils.getTwitter().setAuthTokenSecret(null); AccessToken.setCurrentAccessToken(null);

对于Facebook,我试过

  • 卸载我的应用程序 - 解决问题。
  • 使用Facebook SDK注销功能:

    Profile.setCurrentProfile(null);

    LoginManager.getInstance().logOut();

    Session.closeAndClearTokenInformation()

  • 根据建议here,曾经有{{1}}。但Facebook有Deprecated the Session class,它已不在SDK中。

  • 按照建议here取消关联Facebook帐户。这又导致重复的ParseUsers,我仍然可以使用保存的凭据登录。

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

1 个答案:

答案 0 :(得分:0)

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

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

最后但同样重要的是:您运行的是最新版本的Parse SDK吗?