首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析-为什么user.getSessionToken()返回未定义的

解析-为什么user.getSessionToken()返回未定义的
EN

Stack Overflow用户
提问于 2015-04-07 10:08:40
回答 1查看 2.7K关注 0票数 3

我使用云函数来获取用户的sessionToken。文档指出,该方法只在用主键获取用户对象时才返回正确的值。然而,即使我使用主键,我仍然得到未定义的结果。我的密码怎么了?

代码语言:javascript
运行
复制
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());
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-07 18:25:46

这将不起作用,因为当您通过云代码获取用户时,用户不会登录。要使getSessionToken工作,您需要已经有一个登录用户。因为,否则CloudCode如何知道您想要获得的用户会话?(如果他登录了多个设备)您的代码也返回数据库中的第一个用户,这真的是您想要的吗?

无论哪种方式,您都需要通过云代码登录用户,然后返回会话令牌。但是,在没有密码的情况下,我做这个工作遇到了一些困难(只需调用user.logIn(),它就可以正常工作),所以我找到的唯一解决方案是更改用户的密码,然后将其登录。为什么需要获取用户的会话令牌?如果您不介意更改用户的密码,您可以这样做:

代码语言:javascript
运行
复制
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();
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29489008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档