如何从我的 iOS 应用程序中删除 Twitter 的会话和 cookie

Posted

技术标签:

【中文标题】如何从我的 iOS 应用程序中删除 Twitter 的会话和 cookie【英文标题】:How to remove session and cookie of Twitter from my iOS App 【发布时间】: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];
     

期待听到您的回复!

【问题讨论】:

【参考方案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 ***.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,因为我从未使用过它们。我将使用代码编辑我的答案。

以上是关于如何从我的 iOS 应用程序中删除 Twitter 的会话和 cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 iOS 应用程序中删除推送通知?

如何使用 iOS 上的原生 Twitter 应用打开 Twitter 推文?

如何从我的应用程序中删除新的返回上一个应用程序 iOS 9 按钮?

从我的网站向 Twitter 帐户发布推文时如何使文本变为粗体或斜体

无法使用开放图形元标记从我的 React next.js 网站共享 Facebook/Twitter 内容

当Apple从设置中删除时,如何在Xcode 9 Simulator中访问Twitter?