与 Safari 同步 - SFSafariViewController 的扩展

sle*_*her 2 safari ios swift sfsafariviewcontroller sfauthenticationsession

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

nat*_*han 6

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

在 WWDC 上,Apple宣布iOS 11 中 Safari 视图控制器的行为发生了变化,因为存储的数据(cookie、本地存储等)将不再在 Safari 视图控制器的实例之间共享。我们已经通过测试版在内部确认了这一点,这似乎得到了 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) 体验。此选项适用于在同一设备上安装了许多应用程序的企业公司。

SFAuthenticationSession 的 Apple 文档