调用ParseUser.save会删除Session

时间:2015-05-29 12:00:16

标签: android session parse-platform

我使用Android的parse.com后端。

我想注册一个新用户,然后在用户对象上设置一些数据字段。注册后设置数据字段非常重要,因为稍后我想使用beforeSave触发器启用自动ACL设置(当前没有激活触发器!)。

以下内容:注册成功完成,然后我设置数据字段并致电currentUser.save。有时根本没有调用SaveCallback(既没有错误,也没有成功)。但是,大多数情况下会调用它,但会删除用户的会话。我可以在数据浏览器中轻松检查。此外,如果我在此之后尝试执行任何操作,则会收到无效的会话异常。

以下是代码:

final User user = getData();
user.setEmail(emailStr);
user.setUsername(emailStr);
user.setPassword(password);

user.signUpInBackground(new SignUpCallback() {
    @Override
    public void done(ParseException e) {
        if (e == null) {
            // this will be more complex data in the future
            User.getCurrentUser().put("testInt", 5);
            User.getCurrentUser().saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if (e == null) {
                        // Hooray! But wait.. Oh no, the session is gone
                    } else {
                        // Oh no, something even worse happened
                    }
                }
            });
        } else {
            // signup failed
        }
    }
});

经过一天多的尝试和错误,我开始相信这实际上是Parse框架中的一个错误。 guide明确指出:

  

应始终使用signUpInBackground(或signUp)方法创建新的ParseUsers。可以通过调用save来完成对用户的后续更新。

有没有人有类似的行为?

1 个答案:

答案 0 :(得分:0)

请勿在注册后调用save,将数据放在之前,注册将保存它们。此外,您必须在注册后登录用户。成功调用parseuser.logininbackground;这应该创建一个登录会话。 在登录之前,解析会在登录后保持匿名会话,从而创建用户会话。