Подтвердить что ты не робот

Выполнить недействительный токен сеанса (код: 209, версия: 1.7.1)

Я только что обновил и мой Parse, и Facebook SDK (1.7.1 и 4.0 соответственно) - и это было абсолютной болью для работы, я мог бы добавить!

Однако теперь я получаю 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);
    }
}];
}

Который выдает следующее [Ошибка]: недопустимый токен сеанса (Код: 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];
}

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

    [PFUser enableRevocableSessionInBackground];

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

Ответ 4

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

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

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

Попытка выполнения вышеуказанных действий должна работать на вас.

Ответ 5

В случае отзываемых сеансов ваш текущий токен сеанса может стать недействительным, если соответствующий объект Session будет удален из Parse Cloud. Это может произойти, если вы реализуете пользовательский интерфейс диспетчера сеансов, который позволяет пользователям выходить из других устройств, или если вы вручную удаляете сеанс с помощью облачного кода, REST API или браузера данных. Сессии также могут быть удалены из-за автоматического истечения срока действия (если это настроено в настройках приложения). Когда маркер сеанса устройства больше не соответствует объекту Session в Parse Cloud, все запросы API с этого устройства завершатся с ошибкой "Ошибка 209: неверный маркер сеанса".