2017-06-24 1 views
0

Je viens de mettre à jour parse-server de 2.2.x à 2.4.x et mon code de cloud using sessionToken ne fonctionnait pas. Ci-dessous est simple fonction de code nuage:Le code cloud sessionToken est-il modifié dans le serveur d'analyse 2.4.x?

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"); 
    } 
}); 

Il utilise {sessionToken: token} pour interroger. Ce code a fonctionné avant, mais maintenant cela ne fonctionne pas dans parse-server 2.4.x. J'ai reçu l'erreur

ParseError { code: undefined, message: 'unauthorized' } 

Je ne sais pas si quelque chose change dans la version 2.4.x du serveur d'analyse. Si je change à {useMasterKey:true} cela fonctionne bien, mais dans ce cas je veux utiliser le jeton de l'utilisateur pour interroger. Merci pour votre aide.

Répondre

0

Ils n'ont pas vraiment changé la partie ... query.find({sessionToken : token}) ..., mais peut-être qu'ils ont changé comment fonctionne User.getSessionToken().

Le documentations dit:

Chaîne getSessionToken()

Renvoie le jeton de session pour cet utilisateur, si l'utilisateur a été connecté, ou si elle est le résultat d'une requête avec la clé principale. Sinon, renvoie undefined.

Renvoie: le jeton de session, ou non définie

Depuis en cas de code nuage, ni l'utilisateur est connecté, pas son résultat d'une requête en utilisant masterKey, getSessionToken() devrait effectivement se comporter de cette façon seulement . Pour corriger cela, ce que je suggère est, plutôt que de faire la requête de la part de l'utilisateur dans le code de nuage (et donc sur le serveur), laissez simplement l'utilisateur le faire à partir du client.

+0

J'ai fait console.log ("jeton d'utilisateur" + jeton); pour voir la valeur du jeton, et le jeton est valide. – MichaelP

+0

peut-être un problème avec la classe ACL ou CLP? btw, ce code d'erreur = undefined est un peu maladroit – ZeekHuge

+0

Le document de cette collection sera sauvegardé avec ACL, ainsi l'utilisateur lira et écrira ses propres données. Si j'utilise repos api avec X-Parse-Session-Token directement à cette classe, Get request fonctionne bien. – MichaelP