如何从我的 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 上的原生 Twitter 应用打开 Twitter 推文?
如何从我的应用程序中删除新的返回上一个应用程序 iOS 9 按钮?
从我的网站向 Twitter 帐户发布推文时如何使文本变为粗体或斜体