使用 Fabric 注销活动的 Twitter 会话

Logout of Active Twitter Session Using Fabric

我已经阅读了关于如何在 Xcode 中为 IOS 使用 Fabric 注销 Twitter 的论坛和建议,但我无法获得 logOut 方法来调用和注销用户当前会话。这是我当前的登录视图控制器代码:

- (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 会话并重置它 - 但没有任何效果。如果有人能帮助我,我将不胜感激 - 谢谢!

仅供参考:不建议[[Twitter sharedInstance] logOut]; .这种方法本身并不能满足我的要求。如果有人能告诉我如何使用 使用 成功注销此方法以及其余过程,那就没问题了。

经过一系列的方法,清除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)
        }