我已经在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,因为我已经看到了针对该特定情况的一些问题。
提前致谢
答案 0 :(得分:3)
在您的应用中的某个地方,可能是您最有可能将此消息发送到PFUserClass的appDelegate
[PFUser enableAutomaticUser];
在这种情况下
[PFUser currentUser];
永远不会返回nil;
答案 1 :(得分:3)
在将登录功能与facebook登录相结合时,我遇到了同样的问题。错误结果非常简单,而且是我的一个基本错误。我在Application类
中编写了以下代码ParseUser.enableAutomaticUser();
即使您最后一次注销,每次运行应用程序时都会创建用户。删除它解决了我的问题。
答案 2 :(得分:1)
正如我在上面的评论中所说,我得到了它的工作:
然后,登出/登录机制奇迹般地发挥作用:|
我能想象的唯一原因是我之前已经注册了这个用户,启用了自动用户创建,并且它在某种程度上停留在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 }