2016-03-05 1 views
0

У меня есть приложение, которое проверяет, действителен ли текущий сеанс. Поэтому, если вы измените пароль на другом телефоне, он будет выходить из ваших других телефонов при открытии приложения. Итак, если есть токен сеанса, кэшированный в [PFUser currentUser], я хочу стать InBackground с этим токеном, и если он вернет ошибку, то этот сеанс будет недействительным, и мы должны выйти из системы, иначе это будет действительным, и у нас будет новый sessionToken. Когда я запускаю этот код я не получаю никаких ошибок, и пользователь возвращается с (нуль) для .sessionTokenParse makeInBackground устанавливает currentUser.sessionToken на null

NSLog(@"Current Token: %@", [PFUser currentUser].sessionToken); 

if ([PFUser currentUser].sessionToken) {   
    [PFUser becomeInBackground:[PFUser currentUser].sessionToken block:^(PFUser * _Nullable user, NSError * _Nullable error) { 
     if (error) { 
      NSLog(@"%@", error); 
     } else { 
      NSLog(@"Returned User Token: %@", user.sessionToken); 
     } 
    }]; 
} 

это возвращает

Current Token: r:36ff500b036c041a37h9bab21f308741 
Returned User Token: (null) 

Это вычеркивания CurrentUser sessionToken! У меня самый последний Parse SDK (1.12.0), и я понятия не имею, почему он делает это со мной.

ответ

2

Я считаю, что это происходит, когда вы инструктируете ParseSDK стать, что другой пользователь, который выглядит так, будто он не работает, если он совпадает с текущим пользователем (т. Е. Ваш сеанс действителен).

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

[[PFUser currentUser] fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) { 
    if (error) { 
     NSLog(@"Error refreshing user %@", error.localizedDescription); 

     // check if the session token is invalid... force a logout! 
     if ([error.domain isEqualToString:PFParseErrorDomain] && error.code == kPFErrorInvalidSessionToken) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [PFUser logOut]; 

       // Show your login screen or whatever here 
      }); 
     } 

     return; 
    } 
}];