如何在Parse中与在云代码上创建的用户一起使用新的增强会话



我在Android应用程序上尝试Parse中新的增强可撤销会话。它在通过电子邮件密码或facebook登录或注册时效果良好,但在自定义身份验证(如google+)时效果不佳。

我目前正在使用云代码登录用户,该代码在注册时也会创建新用户。这不会创建新的会话对象,这意味着不使用新的增强会话,它仍然使用旧会话。

我将会话令牌传递回客户端,用户在客户端使用begin方法登录,但这是遗留会话。

这感觉功能还不完整,但我真的很想用我的应用程序转到新的增强会话。有人和他们一起工作过吗?是否有使用REST API或手动创建会话并手动处理会话的解决方法?我研究了JS API,但它说它只是只读的。

这是关于增强会话的博客文章。

我下一步该去哪里?

是的,我找到了一个解决方案,但这是一个变通方法,适用于我的情况,因为我不支持使用用户/密码注册。

基本上,半伪代码中的解决方案(云代码)是:

  1. 使用主密钥获取用户
  2. 检查user.getSessionToken()是否有值
  3. 如果有,则返回会话令牌,并像往常一样在客户端中执行user.become()
  4. 如果不是,这里是解决方法,请执行以下操作:
yourPreviousPromiseInOrderToChainThem.then(function(user) 
password = new Buffer(24);
_.times(24, function(i) {
password.set(i, _.random(0, 255));
});
password = password.toString('base64')
user.setPassword(password);
return user.save();
}).then(function(user) {
return Parse.User.logIn(user.get('username'), password)
}).then(function(user) {
var sessionToken = user.getSessionToken();
// Return the session token to the client as you've been doing with legacy sessions
})

这意味着,我每次都在更改用户密码以便进行远程登录,当然,我知道这不能适用于所有情况,这对应用程序来说已经足够了,因为我不支持使用用户/密码登录(仅限第三方登录),但我知道可能不是所有情况都适用。我从这个官方的Parse例子中得到了这个想法。

我不喜欢这个解决方案,因为我认为这不是一个变通方法,它是一个超级黑客,但我认为目前没有其他方法(Parse.com或Parse Server)

如果你找到其他解决方法,请分享:)

最新更新