我使用云函数来获取用户的sessionToken。文档指出,该方法只在用主键获取用户对象时才返回正确的值。然而,即使我使用主键,我仍然得到未定义的结果。我的密码怎么了?
Parse.Cloud.define("hello", function(request, response) {
Parse.Cloud.useMasterKey();
Parse.Promise.as().then(function(){
var query = new Parse.Query(Parse.User);
return query.first({useMasterKey:true});
}).then(function(user){
return user.fetch({useMasterKey:true});
}).then(function(user){
response.success(user.getSessionToken());
});
});发布于 2015-04-07 18:25:46
这将不起作用,因为当您通过云代码获取用户时,用户不会登录。要使getSessionToken工作,您需要已经有一个登录用户。因为,否则CloudCode如何知道您想要获得的用户会话?(如果他登录了多个设备)您的代码也返回数据库中的第一个用户,这真的是您想要的吗?
无论哪种方式,您都需要通过云代码登录用户,然后返回会话令牌。但是,在没有密码的情况下,我做这个工作遇到了一些困难(只需调用user.logIn(),它就可以正常工作),所以我找到的唯一解决方案是更改用户的密码,然后将其登录。为什么需要获取用户的会话令牌?如果您不介意更改用户的密码,您可以这样做:
var password; //create new random passowrd
query.first({useMasterKey: true}).then(function(user){
user.set("password", password);
return user.save();
}).then(function(user){
return Parse.User.logIn(user.get("username"), password);
}).then(function(user){
return user.getSessionToken();
});https://stackoverflow.com/questions/29489008
复制相似问题