【问题标题】:How to remove session and cookie of Twitter from my iOS App如何从我的 iOS 应用程序中删除 Twitter 的会话和 cookie
【发布时间】:2015-11-16 06:07:08
【问题描述】:

我正在使用 Fabric SDK 来登录我的应用程序。

我想从我的 iOS 应用程序中删除 Twitter 的会话和 cookie。因为我第一次使用这个 SDK 从 Twitter 成功登录。但是,如果用户想使用 Twitter 从其他凭据登录到我的应用程序,那么如果没有明确的会话,这是不可能的。

为了清晰的 Twitter 会话,我正在使用以下代码。但它不起作用。

[[Twitter sharedInstance]logOut];
[[Twitter sharedInstance]logOutGuest];
NSHTTPCookieStorage *cookieList = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *x in cookieList.cookies)
{
     if ([[x valueForKey:@"domain"] isEqualToString:@".twitter.com"])
     {
           [cookieList deleteCookie:x];
     }
}

期待听到您的回复!

【问题讨论】:

    标签: ios objective-c twitter session-cookies twitter-fabric


    【解决方案1】:

    尝试添加此项以删除 cookie

        let cookie = NSHTTPCookie.self
        let cookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
    
        for cookie in cookieStorage.cookies!
        {
           cookieStorage.deleteCookie(cookie)
        }
    

    在 Objective-C 中

    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *httpCookie in cookieStorage.cookies)
    
    {
        if ([[httpCookie valueForKey:@"domain"] isEqualToString:@".twitter.com"])
        {
            [cookieStorage deleteCookie:httpCookie];
        }
    }
    

    【讨论】:

    • 请用objective-c语言分享这段代码。它是否正确?? NSHTTPCookie * cookie = NSHTTPCookie.self; NSHTTPCookieStorage *cookieList = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookieList.cookies 中的 cookie) { [cookieList deleteCookie:cookie]; }
    • 您可以查看此链接以获取objective-c stackoverflow.com/a/21823068/5362916
    • 谢谢!!!我正在尝试这个,但它不适合我。因为我想从我的应用程序中删除 Twitter 会话。
    • 你也可以像这样使用 NSURL *url = [NSURL URLWithString:@"api.twitter.com"]; NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]; for (NSHTTPCookie *cookie in cookies) { [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; }
    【解决方案2】:

    您是否使用断点来了解它是否进入了 de if 条件?

    顺便说一句,您必须更改代码,在枚举对象时不能从数组中删除它。也许您可以在找到 cookie 时使用另一个变量来持久化它并将其从 forin 循环中删除

    // 编辑

    NSHTTPCookieStorage *cookieList = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSMutableArray *cookies = [[NSMutableArray alloc] init];
    for (NSHTTPCookie *x in cookieList.cookies)
    {
         if ([[x valueForKey:@"domain"] isEqualToString:@".twitter.com"])
         {
             [cookies addObject:x];
         }
    }
    if (cookies.count > 0) {
        for (NSHTTPCookie *cookie in cookies) {
            [cookieList deleteCookie:cookie];
        }
    }
    

    我创建了一个数组,因为我不知道 twitter 中保留了多少 cookie

    【讨论】:

    • 是的,我使用断点进行调试。我知道这就是问题所在。但我现在没有任何替代解决方案。因此,如果您有任何替代解决方案,请分享给我。我想从我的应用程序中清除 Twitter 的会话和 cookie。
    • 也许域不完全是“.twitter.com”,您是否尝试打印整个数组?这样你就可以搜索并正确写入(如果它是错误的)
    • 是的,我打印整个数组。有时它有 4 个对象,有时有 7 个对象。我也想@“twitter”作为域名。它的工作原理相同。但没有解决我的问题。
    • 我唯一能建议的是删除 cookie 的方法,但我无法帮助您创建该 cookie,因为我从未使用过它们。我将使用代码编辑我的答案。
    猜你喜欢
    • 2011-05-15
    • 2015-07-30
    • 2012-06-18
    • 1970-01-01
    • 2010-11-08
    • 2022-01-03
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多