【问题标题】:Parse, how to handle an invalid session?解析,如何处理无效会话?
【发布时间】:2016-04-22 08:45:53
【问题描述】:

直接来自文档,它说:

PFUser#currentUser() 从磁盘获取当前登录的用户并 返回它的一个实例。

这很好,但是如果登录@磁盘的用户不是在服务器上登录的用户怎么办。假设用户帐户由于某种原因已被删除,或者会话由于数据库修改而不再有效。这些是我目前面临的问题。

在我阅读的所有教程中,我看到使用以下代码行来检查用户是否有效,因此您可以跳过应用程序的登录阶段:

if let user = PFUser.currentUser() as? Subclass {
    // Simulate successful login
}

但是,这对我来说是个问题,因为成功登录是模拟的,但登录不成功。这是我正在处理的错误:

[错误]:无效会话令牌(代码:209,版本:1.12.0)

所以我做的第一件事是尝试注销用户,但这失败了(我假设是因为用户一开始没有登录),现在我被扔进应用程序,由于需要数据而立即崩溃由服务器不存在。以下是我尝试处理错误代码 209 的方式:

let query = PFQuery(className: "Foo")
query.whereKey("Bar", equalTo: "Foo")
query.findObjectsInBackgroundWithBlock {
    (foo, error) -> Void in
    if let error = error {
        print(error);
        if error.code == 209 {
            PFUser.logOutInBackgroundWithBlock {
                (error) -> Void in
                if let error = error {
                    print("Okay, I'm trapped!");
                }
            }
        }
    }
}

这个“查询”的输出如下:

[Error]: invalid session token (Code: 209, Version: 1.12.0)
Okay, I'm trapped!

我在这里没有想法,我正在努力弄清楚如何在应用程序启动时正确验证用户。必须在每个查询中捕获错误代码 209 似乎是多余的,但如果这是您必须做的,那么这就是您必须做的。

【问题讨论】:

    标签: ios parse-platform


    【解决方案1】:

    您可以使用同步注销。因此,即使发生错误,也没关系。如果用户再次启动应用程序,PFUser 会话令牌将失效。

    最新的 Parse SDK 还提供了 PFConstants 类,它为所有可能的错误情况提供了枚举。

    kPFErrorInvalidSessionToken = 209.

    if (error.code == kPFErrorInvalidSessionToken) {
        PFUser.logOut()
        //Necessary pop of view controllers after executing the previous code.
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2018-02-14
      • 2018-02-21
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2019-08-20
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多