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

标签 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 中注销 时,我确实被注销了。但是,如果我再次单击 Facebook 或 Twitter 登录按钮,我将作为我以前的帐户进行预验证,我无法切换帐户。

我试过:

  • 正在检查 Chrome 和浏览器,但均未登录 Twitter。
  • 退出 native Twitter/Facebook 应用

我的登录逻辑一开始很简单:

ParseUser.logOut();

对于推特我试过了

  • 卸载我的应用程序 - 这确实解决了问题,但不是理想的解决方案。
  • 不按照此处的建议在我的Application 中调用Parse.enableLocalDatastore(this);: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() 的建议here .但是 Facebook 有 Deprecated the Session class它不再包含在 SDK 中。

  • 按照建议取消链接 Facebook 帐户 here .这再次导致重复的 ParseUsers,我仍然能够使用保存的凭据登录。

如果有任何答案或建议,我将不胜感激。即使您只能回答 Twitter 或 Facebook 而不是两者,我仍然很想听听。

最佳答案

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

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

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

关于android - 使用 Parse Twitter/Facebook 身份验证注销或切换帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34101598/

相关文章:

CakePHP - 验证以保存用户上次登录时间

Java:如何添加 SSL 客户端身份验证

java - Android Studio - 无法创建 keystore

android - Firestore 数据库 : Updating missing documents

android - Facebook Unity SDK,如何使用 webview 而不是 FB App 强制登录

facebook - (#210) 用户不可见的原因是什么

java - 射击 Sprite 安卓

Google Play 发布的 Android Facebook key

javascript - FB.logout() - 无访问 token - "Log in as Different User"

php - Laravel 身份验证不显示 session 消息