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

Ios 当用户具有无效会话时,对公共类的查询失败,ios,parse-platform,pfuser,Ios,Parse Platform,Pfuser,Parse方面的行为值得怀疑,但我需要找到一个解决方法。我发现,一旦用户的会话无效,所有未来的请求都将失败,直到会话再次有效,包括对可公开查询的数据的查询,而无需登录 这让我很恼火,因为我的注册屏幕要求用户从一些从公共可访问类查询的PFObjects中进行选择。我显示一个选项列表,他们点击其中一个,然后我在他们点击注册时创建的新用户对象上设置该对象。当他们的会话无效时,问题就出现了。我显示了登录或注册屏幕,但如果他们想注册,他们就不能,因为查询注册中所需的信息失败,出现错误error Domai

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

这让我很恼火,因为我的注册屏幕要求用户从一些从公共可访问类查询的
PFObject
s中进行选择。我显示一个选项列表,他们点击其中一个,然后我在他们点击注册时创建的新用户对象上设置该对象。当他们的会话无效时,问题就出现了。我显示了登录或注册屏幕,但如果他们想注册,他们就不能,因为查询注册中所需的信息失败,出现错误
error Domain=Parse code=209“invalid session token”
(尽管用户不需要有活动会话来访问数据)

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


在这种情况下可以做什么?

当检测到用户的会话无效时,可以强制用户注销。这个请求仍然会报告209错误,尽管它实际上成功地将用户注销。用户注销后,可以查询公共类

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()
        }
    })
}
资料来源: