2017-06-24 16 views
0

parse-serverを2.2.xから2.4.xに更新しました。私のクラウドコードはsessionTokenを使用しても機能しませんでした。以下は、単純なクラウドコード関数です。解析サーバー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

彼らは実際に... query.find({sessionToken : token}) ...の部分を変更しますが、変更された可能性がありますUser.getSessionToken()

documentationsは言う:

文字列getSessionToken() ユーザーがログインしている場合

は、このユーザーのセッショントークンを返し、またはそれは と、クエリの結果である場合マスターキーそれ以外の場合は、undefinedを返します。

戻り値:クラウド・コードの場合には、利用者のいずれもがログインしているので、セッショントークン、または未定義

は、MASTERKEY、getSessionToken()を使用して、クエリのないその結果は、実際にはそのように振る舞うべき。

これを修正するには、クラウドコード(したがってサーバー上)のユーザーの代わりにクエリを作成するのではなく、ユーザーがクライアントからそれを作成できるようにすることをお勧めします。

+0

私はconsole.log( "ユーザートークン" +トークン)を実行しました。トークンの値を見ることができ、トークンは有効です。 – MichaelP

+0

おそらくクラスACLまたはCLPに何らかの問題がありますか? btw、そのエラーコード=未定義は少し厄介です – ZeekHuge

+0

このコレクションのドキュメントはACLとともに保存されるため、ユーザーは自分のデータを読み書きしかできません。このクラスに直接X-Parse-Session-Tokenを使って残りのAPIを使用すると、Get要求は正常に機能します。 – MichaelP

関連する問題