Parse for Android:ParseUser.logOut()不会将用户注销

时间:2013-11-27 22:44:52

标签: android parse-platform logout

我已经在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(文档说明)。它仍然返回先前登录的用户。 即使我重新启动应用程序,用户仍被视为已连接。

我使用parse framework v1.3.8(3天前下载)。我没有使用Facebook SDK,因为我已经看到了针对该特定情况的一些问题。

提前致谢

8 个答案:

答案 0 :(得分:3)

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

[PFUser enableAutomaticUser];

在这种情况下

[PFUser currentUser];

永远不会返回nil;

答案 1 :(得分:3)

在将登录功能与facebook登录相结合时,我遇到了同样的问题。错误结果非常简单,而且是我的一个基本错误。我在Application类

中编写了以下代码

ParseUser.enableAutomaticUser();

即使您最后一次注销,每次运行应用程序时都会创建用户。删除它解决了我的问题。

答案 2 :(得分:1)

正如我在上面的评论中所说,我得到了它的工作:

  1. 卸载应用
  2. 在Parse仪表板上删除用户
  3. 重新安装应用并重新注册
  4. 然后,登出/登录机​​制奇迹般地发挥作用:|

    我能想象的唯一原因是我之前已经注册了这个用户,启用了自动用户创建,并且它在某种程度上停留在Parse中的用户实体。

答案 3 :(得分:1)

遇到同样的错误。现在我不再检查ParseUser为null,而是检查用户名:

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

答案 4 :(得分:0)

尝试

ParseUser.getCurrentUser().logOut();

答案 5 :(得分:0)

我遇到了同样的问题。实际上这是解析sdk中的一个错误,只是通过安装最新的解析android sdk(编写本文时为1.8.1)而没有更改任何代码来解决问题。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

ParseUser.getCurrentUser().logout();

并确保删除

ParseUser.enableAutomaticUser();

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

因此,如果要检查用户是否已登录或注销,请执行以下操作

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