2016-01-16 2 views
0

Прямо из документации, он говорит, что:Анализ, как обрабатывать недействительный сеанс?

PFUser # CurrentUser() получает вошедшего в систему пользователя с диска и возвращает экземпляр.

Это нормально и все, но что, если пользователь, зарегистрированный на @ диске, не является пользователем, который вошел в систему на сервере. Допустим, что учетная запись пользователя была удалена по какой-либо причине или сеанс больше не действителен из-за изменений в базе данных. В настоящее время это проблемы, с которыми мне приходится сталкиваться.

На протяжении учебники, которые я читал, я видел, используя следующую строку кода, как способ проверить, если пользователь является действительным, и, таким образом, вы можете пропустить этап входа приложения:

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

Однако это создает проблему для меня, поскольку имитируется успешный вход в систему, но логин не был успешным. Здесь ошибка я имею дело с:

[Error]: недопустимый сессии маркер (код: 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! 

Я из идей здесь, и я разрывая My волосы, пытаясь выяснить, как правильно проверить пользователя при запуске приложения. Кажется излишним улавливать код ошибки 209 для каждого запроса, но если это то, что вам нужно сделать, то это то, что вам нужно сделать.

ответ

0

Вы можете использовать синхронный выход из системы. Поэтому даже если возникает ошибка, это не имеет значения. Маркер сеанса PFUser будет недействительным, если пользователь снова запустит приложение.

Также последний Parse SDK предоставляет класс PFConstants, который предоставляет перечисление для всех возможных случаев ошибок.

kPFErrorInvalidSessionToken = 209.

if (error.code == kPFErrorInvalidSessionToken) { 
    PFUser.logOut() 
    //Necessary pop of view controllers after executing the previous code. 
} 
Смежные вопросы