当用户具有无效会话时,对 public 类 的查询失败

Queries on public classes fail while user has invalid session

这是 Parse 方面的可疑行为,但我需要找到解决方法。我发现一旦用户的会话失效,所有未来的请求都将失败,直到会话再次有效,包括对可公开查询的数据的查询 - 无需登录。

这让我很难受,因为我的注册屏幕需要来自某些 PFObject 的用户 select,这些 PFObject 是从可公开访问的 class 查询的。我显示一个选项列表,他们点击一个,然后我将该对象设置在他们点击注册时创建的新用户对象上。当他们的会话无效时,问题就出现了。我显示登录或注册屏幕,但如果他们想注册,他们不能,因为对注册所需信息的查询失败并出现错误 Error Domain=Parse Code=209 "invalid session token"(尽管用户不需要拥有访问数据的活动会话)。

因此,用户登录帐户后无法创建新帐户,并且该帐户的会话已失效。这会在几种情况下发生:帐户会话实际过期,用户使用 Facebook 登录且其会话已过期,或者用户被完全删除(可能是因为他们发布了不合适的内容)。在所有情况下,我都会收到 209 无效会话错误,我需要支持当时的注册能力——尤其是后者,因为他们不可能登录到被删除的帐户。

遇到这种情况怎么办?

当您检测到他们的会话无效时,您可以强制注销用户。该请求仍将报告 209 错误,尽管它实际上已成功将用户注销。用户注销后,您可以在 public 类.

上查询
func sessionInvalidated() {
    //force log out, otherwise can't fetch info in sign up screen with an invalid session
    PFUser.logOutInBackgroundWithBlock({ (error: NSError?) -> Void in
        //still will get 209 invalid session, user is still logged out in this case, ignore
        if error == nil || error!.code == 209 {
            self.showWelcomeScreen()
        }
    })
}

来源:https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/671