我刚刚将解析服务器从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}
进行查询。此代码之前有效,但现在它在parse-server 2.4.x中不起作用。我收到了错误
ParseError { code: undefined, message: 'unauthorized' }
我不知道解析服务器版本2.4.x是否有任何变化。如果我更改为{useMasterKey:true}
它可以正常工作,但在这种情况下我想使用用户的令牌进行查询。谢谢你的帮助。
答案 0 :(得分:0)
他们并没有真正改变... query.find({sessionToken : token}) ...
部分,但也许他们改变了User.getSessionToken()
的工作方式。
String getSessionToken()
返回此用户的会话令牌if 用户已登录,或者是否是查询结果 主密钥。否则,返回undefined。
返回:会话令牌或未定义
因为在云代码的情况下,用户既没有登录,也没有使用masterKey查询的结果,getSessionToken()
实际上应该只是这样。
要纠正这个问题,我建议的是,不要在云代码中代表用户进行查询(因此在服务器上),只需让用户从客户端进行查询。