Выход из активной сессии Twitter с помощью Fabric


Я прочитал форумы и предложения о том, как выйти из Twitter в Xcode для IOS с помощью Fabric, но я не могу получить метод выхода для вызова и выхода пользователя из текущей сессии. Вот мой текущий код для контроллера вида входа:

- (IBAction)TESTT:(id)sender {
[[Twitter sharedInstance] logInWithCompletion:^
 (TWTRSession *session, NSError *error) {
     if (session != nil) {
         NSLog(@"signed in as %@", [session userName]);
     } else {
         NSLog(@"error: %@", [error localizedDescription]);
     }
 }];
}

- (IBAction)LOGOUT:(id)sender {
[self logOut];
}

- (void)logOut{
[[Twitter sharedInstance] logOut];
}

Я импортировал и имею функциональность входа в систему, хорошо работающую из учебника Fabric.

Я просто не могу получить кнопку, которую я сделал, которая использует действие выхода для выхода пользователя из текущего Twitter сессия. Я даже попытался очистить куки, чтобы посмотреть, может ли это стереть сеанс Twitter из памяти и сбросить его-но ничего. Если бы кто - нибудь мог мне помочь, я был бы очень признателен-спасибо!

К вашему сведению: пожалуйста не предлагайте только [[Twitter sharedInstance] logOut]; . Этот метод сам по себе не делает того, о чем я прошу. Если кто-то может сказать мне, как успешно выйти из системы , используя Этот метод вместе с остальной процедурой, это было бы прекрасно.

2 3

2 ответа:

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

Самый простой способ выйти и очистить предыдущий сеанс пользователя выглядит следующим образом:

  1. перейдите в настройки
  2. перейдите в свой Twitter и запретите доступ Twitter к вашему приложению (оно должно появиться здесь)
  3. Вернитесь в приложение и вызовите следующий метод:

    - (void)twitterLogout:(id)sender {
        NSUserDefaults *twitterSession = [NSUserDefaults standardUserDefaults];
        [twitterSession setObject:0 forKey:@"TwitterSession"];
        [twitterSession synchronize];
    
        NSLog(@"Twitter session = %@", twitterSession);
    
        [[Twitter sharedInstance] logOut];
        [self.view insertSubview:_logoutTwitter atIndex:16];
    
    
        NSHTTPCookie *cookie;
         NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        for (cookie in [storage cookies])
        {
            NSString* domainName = [cookie domain];
            NSRange domainRange = [domainName rangeOfString:@"Twitter"];
            if(domainRange.length > 0)
            {
                [storage deleteCookie:cookie];
            }
        }
    
        NSURL *url = [NSURL URLWithString:@"https://api.twitter.com"];
        NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
        for (NSHTTPCookie *cookie in cookies)
        {
            [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
        }  
    }
    

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

Вы можете использовать этот простой код для Swift 3:

let store = Twitter.sharedInstance().sessionStore
        if let userID = store.session()?.userID {
            store.logOutUserID(userID)
        }