调用user.signUp()
时,我收到了invalidsessiontoken错误。
这个过程是我调用我的云代码函数来创建一个新用户并发送回sessionToken以成为客户端的那个用户。
云代码:
var user = new Parse.User();
user.set("firstname", fname);
user.set("lastname", lname);
user.set("birthdate", birthdate);
user.set("username", email);
user.set("email", email);
user.set("password", pass);
user.set("emailVerified", false);
user.signUp(null, {
success: function(user){
var acl = new Parse.ACL();
acl.setPublicReadAccess(false);
acl.setPublicWriteAccess(false);
user.setACL(acl);
user.save(null, {
useMasterKey: true
}).then(function(user){
sendEmailVerification(user.get("email"), function(error){
if(error){
console.log("USER SENDEMAILVERIFICATION ERROR!!!!!!!!!!!!!!");
sendMsg(res, error.code, error.message);
return;
}
sendMsg(res, 200, user.getSessionToken());
});
}, function(error){
console.log("USER SAVE ERROR!!!!!!!!!!!!!!!!");
sendMsg(res, error.code, error.message);
});
}, error: function(user, error){
console.log("USER SIGNUP ERROR!!!!!!!!!!!!!!!!!!")
sendMsg(res, error.code, error.message);
}
});
invalidsessiontoken始终出现在USER SIGNUP ERROR上。 我不确定是什么导致这种情况,因为我认为此时甚至不应该有会话令牌。当在客户端发现invalidsessiontoken错误时,我尝试再次注销logout,然后再调用云代码,但它会导致无限循环。
答案 0 :(得分:1)
使用user.signUp时,在创建用户后连接用户。 在这种情况下的问题是,在云代码中连接不是一个好主意。
他们与普通解析中的云代码不同。如果您连接一个功能而另一个用户运行云功能,您仍然可以与第一个用户连接。
出于同样的原因,他们在云代码中没有Parse.User.current()
。
我认为最好的选择是从客户端注册。您不必传递会话令牌并使用become
函数。
如果要检查值,请使用beforesave
触发器,然后决定是否创建用户。