【问题标题】:Parse for Android : ParseUser.logOut() doesn't log user outParse for Android:ParseUser.logOut() 不会注销用户
【发布时间】:2013-11-27 22:44:52
【问题描述】:

我已经在 Android 上玩 Parse 几天了,我遇到了 ParseUser.logOut() 的问题 => 它实际上并没有将当前用户注销。

这就是我的工作:

private void onClickOnDisconnect() {
    ParseUser.logOut();
    currentUser = ParseUser.getCurrentUser(); // should be null but isn't...
    invalidateOptionsMenu();
    Toast.makeText(getApplicationContext(), "Disconnected...", Toast.LENGTH_LONG).show();
}

在调用ParseUser.logOut() 之后,ParseUser.getCurrentUser() 应该返回 null(文档说)。它仍然返回以前登录的用户。 即使我重新启动应用程序,用户仍被视为已连接。

我使用解析框架 v1.3.8(3 天前下载)。我不使用 Facebook SDK,因为我已经看到了一些针对该特定案例的问题。

提前致谢

【问题讨论】:

  • 你确定它是空的吗?
  • Toast 显示了吗?
  • @njzk2 是的,它是空的。我看到了这个帖子,它与 Facebook 相关,我也尝试过解决方案,但没有成功。
  • @Binghammer 是的,它正在显示并且菜单正在正确地失效

标签: android parse-platform logout


【解决方案1】:

在您的应用程序中的某个地方,可能是您最有可能将此消息发送到 PFUserClass 的 appDelegate

[PFUser enableAutomaticUser];

在这种情况下

[PFUser currentUser];

永远不会返回 nil;

【讨论】:

    【解决方案2】:

    在将注销功能与 facebook 登录结合时,我遇到了同样的问题。结果证明这个错误非常简单,对我来说是一个基本错误。我在我的应用程序类中编写了以下代码

    ParseUser.enableAutomaticUser();

    这会在您每次运行应用程序时创建用户,即使您上次注销也是如此。删除它解决了我的问题。

    【讨论】:

      【解决方案3】:

      正如我在上面的 cmets 中所说,我通过以下方式使其工作:

      1. 卸载应用程序
      2. 在 Parse 仪表板上删除用户
      3. 重新安装应用并重新注册

      然后注销/登录机制奇迹般地工作了:|

      我能想象到的唯一原因是我之前与该用户注册并启用了自动用户创建,但它以某种方式粘在 Parse 中的用户实体上。

      【讨论】:

        【解决方案4】:

        遇到同样的错误。现在,我不仅检查 ParseUser 为空,还检查用户名:

        ParseUser currentUser=ParseUser.getCurrentUser()
        if(currentUser==null)
                {
        //user doesn't exist
                }
        else
        {
        if(currentUser.getUserName()==null)
        {
        //user oesn't exist
        }
        }
        

        【讨论】:

        • 所以你可以说: if(crntUser != null && crntUser.getUsername() != null){ //用户存在 } else {// 用户不存在}
        【解决方案5】:

        试试

        ParseUser.getCurrentUser().logOut();
        

        【讨论】:

        • 那是一回事
        • 感谢 Kaypey,但它也不起作用。此外,logOut() 是一个静态方法,直接在实例上调用它没有任何区别。
        【解决方案6】:

        我遇到了同样的问题。实际上,这是 parse sdk 中的一个错误,只需安装最新的 parse android sdk(撰写本文时为 1.8.1)即可解决问题而无需更改我的任何代码。

        【讨论】:

          【解决方案7】:

          我遇到了同样的问题,因为我启用了自动用户,这会导致创建一个新的匿名用户,这里也有解释
          https://www.parse.com/questions/issues-with-parseuserlogout-on-android

          【讨论】:

            【解决方案8】:

            尝试注销当前用户对象,而不是类。

            ParseUser.getCurrentUser().logout();
            

            并确保删除

            ParseUser.enableAutomaticUser();
            

            编辑: 当您注销时,用户实例仍然可用,但具有空字段。 Parse 将所有用户的字段更改为 null。

            所以,如果要检查用户是否登录或退出,只需执行以下操作

            if(ParseUser.getCurrentUser().getUsername() == null)
            { // user is out 
            } else { 
            // user is in }
            

            【讨论】:

              猜你喜欢
              • 2017-07-06
              • 2019-01-05
              • 2010-09-29
              • 2015-07-16
              • 1970-01-01
              • 1970-01-01
              • 2016-02-23
              • 1970-01-01
              相关资源
              最近更新 更多