解析服务器注册无效会话令牌错误

Posted

技术标签:

【中文标题】解析服务器注册无效会话令牌错误【英文标题】:Parse-Server signUp invalidsessiontoken error 【发布时间】:2016-12-03 00:27:49 【问题描述】:

我在调用user.signUp() 时收到无效会话令牌错误。 这个过程是我调用我的云代码函数来创建一个新用户并发送回 sessionToken 以成为客户端的那个用户。 云代码:

var user = new Parse.User();
user.set("firstname", fname);
user.set("lastname", lname);
user.set("birthdate", birthdate);
user.set("username", email);
user.set("email", email);
user.set("password", pass);
user.set("emailVerified", false);
user.signUp(null, 
    success: function(user)
        var acl = new Parse.ACL();
        acl.setPublicReadAccess(false);
        acl.setPublicWriteAccess(false);
        user.setACL(acl);
        user.save(null, 
            useMasterKey: true
        ).then(function(user)
            sendEmailVerification(user.get("email"), function(error)
                if(error)
                    console.log("USER SENDEMAILVERIFICATION ERROR!!!!!!!!!!!!!!");
                    sendMsg(res, error.code, error.message);
                    return;
                
                sendMsg(res, 200, user.getSessionToken());
            );
        , function(error)
            console.log("USER SAVE ERROR!!!!!!!!!!!!!!!!");
            sendMsg(res, error.code, error.message);
        );
    , error: function(user, error)
        console.log("USER SIGNUP ERROR!!!!!!!!!!!!!!!!!!")
        sendMsg(res, error.code, error.message);
    
);

invalidsessiontoken 总是在用户注册错误时出现。 我不确定是什么原因造成的,因为我认为当时甚至不应该有会话令牌。当在客户端发现 invalidsessiontoken 错误时,我尝试调用注销,然后再次调用云代码,但它会导致无限循环。

【问题讨论】:

你为什么不在客户端做呢?当您使用 become 方法时,您可以发布您的客户端吗? 【参考方案1】:

当您使用 user.signUp 时,在创建用户后它会连接用户。 这种情况下的问题是,在云代码中连接不是一个好主意。

它们与常规解析中的云代码不同。如果您在一个功能中连接并且另一个用户运行云功能,您仍然与第一个用户连接。 出于同样的原因,他们在云代码中没有 Parse.User.current()

我认为最好的选择是从客户端注册。您不必传递会话令牌并使用become 函数。

如果要检查值使用beforesave触发器,然后决定是否创建用户。

【讨论】:

谢谢@Alon,等我回到我的电脑上测试时,我会把注册转移到客户端 我决定在云代码中调用 signUp 的一个原因是因为它更安全 为什么?看看我对答案的编辑,使用beforesave trigger 这似乎工作得更好,我似乎不再收到那个错误了。

以上是关于解析服务器注册无效会话令牌错误的主要内容,如果未能解决你的问题,请参考以下文章

JSON 无效令牌

使用访问令牌时,salesforce rest api 无效会话 id 错误

当会话令牌无效时我应该使用啥状态码?

始终在soap客户端php中作为无效会话令牌获得响应

更改密码后 Parse 中的会话令牌无效

AWS - React Native - 注册、登录 - 在客户端和服务器端生成会话令牌