i刚刚将解析服务器从2.2.x更新为2.4.x,使用SessionToken的云代码不起作用。以下是简单的云代码功能:
Parse.Cloud.define('find_device', function(request, response) {
var user = request.user;
if(user){
var token = user.getSessionToken();
console.log("User token " + token);
var query = new Parse.Query('devices');
query.equalTo('deviceId', "389125651274465");
query.find({ sessionToken: token })//<- sessionToken does not work
.then(function(messages) {
response.success(messages);
},function(error){
console.log(error);
response.error("error");
});
}else{
response.error("error");
}
});
它使用{sessionToken: token}
查询。该代码以前有效,但现在它在解析服务器2.4.x中不起作用。我收到错误
ParseError { code: undefined, message: 'unauthorized' }
我不知道Parse-Server版本2.4.x.是否有任何变化。如果我更改为{useMasterKey:true}
,则可以正常工作,但是在这种情况下,我想使用用户令牌查询。感谢您的帮助。
他们没有真正改变了... query.find({sessionToken : token}) ...
部分,但也许他们已经改变了User.getSessionToken()
的工作方式。
文档说:
字符串getsessionToken((
如果 用户已登录,或者是否是查询的结果 主密钥。否则,返回未定义。
返回:会话令牌或未定义的
由于在云代码的情况下,用户均未登录,而不是使用MasterKey查询的结果,getSessionToken()
实际上只能以这种方式行事。
要纠正这一点,我建议的是,而不是在云代码中的用户(以及在服务器上(进行查询,只需让用户从客户端制作。