如何使用 SFSafariViewController 从 iOS Safari 应用程序中读取 Cookie
Posted
技术标签:
【中文标题】如何使用 SFSafariViewController 从 iOS Safari 应用程序中读取 Cookie【英文标题】:How to read Cookies from iOS Safari app using SFSafariViewController 【发布时间】:2016-11-17 10:24:27 【问题描述】:我需要将 Safari 应用程序中的 cookie 读取到我的应用程序内部。那么有没有办法通过在我们的应用程序中使用任何 SFSafariViewController 来做到这一点。请帮帮我。
提前致谢。
已编辑
我有一个 URL https://example.com/abc123,当我在 Safari 应用程序中打开此 URL 时,它会自动设置一些 cookie。现在我必须打开我的应用程序并通过传递域 (https://example.com) 来读取这些 cookie。
NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:[NSURL URLWithString:@"https://wwwexample.com"]];
是否可以读取 cookie?
【问题讨论】:
您能找到解决方案吗? 我们找到了另一种通过 API 读取 cookie 的方法,因为我们可以将 Safari cookie 直接获取到应用程序中。 @Nameet 【参考方案1】:根据文档,您无法使用 SFSafariViewController
读取 cookie。为此,您需要使用 WKWebView
或 UIWebView
。使用UIWebView
获取cookies,可以使用委托方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView
NSHTTPCookieStorage *cookiesStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSURLRequest *urlReq = webView.request;
NSURL *url = urlReq.URL;
NSArray *cookies = [cookiesStorage [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]];
【讨论】:
如果我在我的应用中使用 WKWebView,是否可以从 Safari 应用中读取 Cookie? 是的。您也可以使用UIWebView
获取cookie。我已经编辑了我的答案以包含一些仅供参考的代码
@GaneshGuturi,您是否尝试过访问 NSHTTPCookie
数组中的 NSHTTPCookie
对象?请告诉我
是的,我试过了。我越来越零了。数组计数也是“0”。以上是关于如何使用 SFSafariViewController 从 iOS Safari 应用程序中读取 Cookie的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]