2

我知道它SFSafariViewController有私有 cookie 存储和其他实现。但是,我知道我们可以为每个(每个本机系统)Swift 类编写一个扩展。我需要与本机 Safari 共享 cookie,或者Safari通过一些标头请求从我的应用程序中打开。至少,如何创建一个API用于获取/设置cookies?

4

1 回答 1

6
  1. SFSafariVC 和本机 Safari 之间的 Cookie 共享已在 iOS >= 11 中禁用。

在 WWDC 上,Apple宣布在 iOS 11 中更改 Safari View Controller 的行为,即不再在 Safari View Controller 实例之间共享存储的数据(cookie、本地存储等)。我们已经通过测试版在内部确认了这一点,这似乎得到了 Branch 人员的独立确认

来自 AppAuth-iOS 的 repo:用户 whitehatguy

  1. SFSafariVC 的唯一 API 是为给定 URL 创建一个新实例。您不能设置或修改 cookie。

如果您需要执行自定义代码,请查看WKWebView (iOS >= 8) / UIWebView (iOS < 8)。有用的答案:在 WKWebView 中获取 cookie

创建SFAuthenticationSession是为了允许 SSO/OAuth 身份验证流程,它与本机 Safari 共享 cookie,但开发人员无法直接访问。

管理在 Safari 和应用程序之间共享一次性 Web 服务登录以及 cookie 和网站数据的类,它也可用于其他关联应用程序的自动登录。

您将使用 SFAuthenticationSession 的两种情况是:

  • 使用身份验证协议(例如 OAuth)登录第三方服务。此选项适用于社交网络应用程序。
  • 为应用程序提供单点登录 (SSO) 体验。此选项适用于在同一设备上安装了许多应用程序的企业公司。

Apple 提供的 SFAuthenticationSession 文档

于 2017-08-12T20:48:29.287 回答