解析服务器2.4.x中的云代码sessionToken是否发生了变化?

时间:2017-06-24 09:13:08

标签: parse-platform parse-server cloud-code

我刚刚将解析服务器从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}它可以正常工作,但在这种情况下我想使用用户的令牌进行查询。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

他们并没有真正改变... query.find({sessionToken : token}) ...部分,但也许他们改变了User.getSessionToken()的工作方式。

documentations说:

  

String getSessionToken()

     

返回此用户的会话令牌if   用户已登录,或者是否是查询结果   主密钥。否则,返回undefined。

     

返回:会话令牌或未定义

因为在云代码的情况下,用户既没有登录,也没有使用masterKey查询的结果,getSessionToken()实际上应该只是这样。

要纠正这个问题,我建议的是,不要在云代码中代表用户进行查询(因此在服务器上),只需让用户从客户端进行查询。