2015-04-02 2 views
30

Я только что обновил оба моих пакета (1.7.1 и 4.0 соответственно) - оба были абсолютной болью, чтобы получить работу, которую я мог бы добавить!Проанализируйте недействительный токен сеанса (код: 209, версия: 1.7.1)

Однако теперь я получаю 209 ошибки при попытке войти в систему с Facebook Вот пример моего кода

- (void)loginWithFacebook:(HMSuccessBlock)completion{ 
NSArray *permissionsArray = @[@"user_about_me",@"user_location",@"user_friends",@"user_relationships"]; 

// Login PFUser using Facebook 

[PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error) { 
    if (!user) { 
     NSLog(@"Uh oh. The user cancelled the Facebook login."); 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error" 
                 message:error.localizedDescription 
                 delegate:nil 
               cancelButtonTitle:nil 
               otherButtonTitles:@"Dismiss", nil]; 
     [alert show]; 
     completion(NO, error); 

    } else if (user.isNew) { 
     NSLog(@"User signed up and logged in through Facebook!"); 
     if (completion) { 
      completion(YES, nil); 
     } 
    } else { 
     NSLog(@"User logged in through Facebook!"); 
      completion(YES, nil); 
    } 
}]; 

}

Какие yeilds следующие [Ошибка]: недопустимый сессия маркера (код: 209, Версия: 1.7.1)

Моя первоначальная мысль, что проблема что-то делать с моим кодом в приложение делегата - на более старых версиях facebooksdk я бы применить следующий код

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [FBAppCall handleOpenURL:url 
       sourceApplication:sourceApplication 
        withSession:[PFFacebookUtils session]]; 

}

Однако я не могу показаться, чтобы найти что-нибудь повторить это в обновленной версии, поэтому мой код является

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
              sourceApplication:sourceApplication 
                annotation:annotation]; 

}

Любая помощь будет принята с благодарностью

+2

теперь это общепринятая ошибка командой Facebook Анализировать Eng https://developers.facebook.com/bugs/756392341145634/ – CPD

ответ

7

Некоторые из полученных ответов были временными исправлениями - однако проблема может повториться позже, если пользователь выйдет из системы и попытается снова войти в систему - я думаю, что это было связано с тем, что я разрешаю анонимным пользователям также - единственный способ, которым я мог бы очистить это назвать [pfuser выход из системы] до войти

+0

Это приведет к тому, что анонимный пользователь потеряет все свои данные при создании учетной записи, не так ли? – picciano

18

Проверьте эту страницу: https://parse.com/tutorials/session-migration-tutorial

Скорее всего, ваше приложение использовало устаревшие токены сеанса. Вы можете перейти на отозванные токены сеанса, добавив это в свой делегат приложения сразу после установки идентификатора приложения и ключа клиента.

[PFUser enableRevocableSessionInBackground]; 

сайт PARSE имеет раздел на обработку этой ошибки, которые могут быть более полезна для вас: https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS

+2

Эй, спасибо это не сделало help хотя – user499846

+1

У меня была такая же проблема. Когда это произойдет, это не позволит вам делать ЛЮБЫЕ вызовы для разбора до тех пор, пока пользователь не войдет в систему.Вам необходимо отключить Revocable Accounts, а затем вызвать ParseUser.LoginAsync (имя пользователя, пароль); После того, как я вошел в систему, я удалил код, и он мог совершать вызовы для разбора до того, как пользователь снова войдет в систему. –

+0

Это сработало для меня -> PFUser.enableRevocableSessionInBackground() – Jay

34

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

+2

О, спасибо, человек ...! –

+1

Отлично! Это помогло! upvoted :) –

+6

Это решило мою проблему, но потом снова заглохло. – user499846

2

Я думаю, что есть еще несколько шагов должны быть выполнены:

  1. Вы должны добавить [FBSDKAppEvents activateApp] в applicationDidBecomeActive.

  2. Вы должны написать
    return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; в методе didFinishLaunchingWithOptions в AppDelegate.

Пробуждение выше шагов должно сработать для вас.

Смежные вопросы