2015-07-09 2 views
3

Я прочитал форумы и предложения о том, как выйти из Twitter в Xcode для IOS с использованием Fabric, но я не могу заставить метод logOut вызывать и выходить из системы с текущего сеанса , Вот мой текущий код для контроллера входа в систему:Выход из активного сеанса Twitter с использованием 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.

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

FYI: ПОЖАЛУЙСТА не предлагают только [[Twitter sharedInstance] Logout]; , Этот метод не выполняет то, что я прошу сам по себе. Если кто-то может сказать мне, как успешно выйти из системы с помощью этот метод, а также остальную процедуру, которая будет в порядке.

ответ

1

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

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

  1. Перейти к настройкам
  2. Go к вашему Twitter и Disallow 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]; 
        } 
    } 
    

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

1

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

let store = Twitter.sharedInstance().sessionStore 
     if let userID = store.session()?.userID { 
      store.logOutUserID(userID) 
     } 
Смежные вопросы