我使用Android的parse.com后端。调用ParseUser.save删除会话
我想注册一个新用户,然后在用户对象上设置一些数据字段。注册后设置数据字段非常重要,因为稍后我想使用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
}
}
});
超过一天后,尝试&错误我开始认为,这实际上是在分析框架中的错误。 guide明确指出:
新的ParseUser应始终使用signUpInBackground(或signUp)方法创建。通过调用save可以完成对用户的后续更新。
有没有人有类似的行为?
1.正如我所说,我真的想避免与注册保存数据,因为我想使用只有当用户登录时才起作用的触发器。 2.您确定必须在调用后登录注册?因为[doc](https://parse.com/docs/android/api/com/parse/ParseUser.html#signUp%28%29)指出: “这将在服务器上创建一个新的ParseUser,将会话保留在磁盘上,以便您可以使用'ParseUser.getCurrentUser()'“访问用户。 另外,如果我删除了对“save”的调用,并且只是注册,则会按照预期创建用户会话对象。 – dpoetzsch