【问题标题】:Managing cookies for a domain in Associated Domains在关联域中管理域的 cookie
【发布时间】:2018-04-01 11:48:22
【问题描述】:

使用NSHTTPCookieStorage 我想读取和设置Safari 也使用的全局cookie,用于与应用程序链接的Associated Domain

但是,Associated Domains 上的文档非常稀少,我发现只有共享凭据的文档 https://developer.apple.com/documentation/security/shared_web_credentials

webcredentials:mydomain.com

我需要的是smth like

cookies:mydomain.com

那么如何管理Associated Domain 的cookie?

【问题讨论】:

标签: ios iphone cocoa-touch associated-domains


【解决方案1】:

我认为使用当前的 API 不可能做到这一点。

确实,雷达exist 正是要求此功能。

从我在 iOS 11 中看到的情况来看,当应用程序具有域关联并尝试打开 SFSafariViewController 实例时,系统会请求用户许可,如果获得许可,则将域的 cookie 传递给Safari 视图控制器实例。 (在 iOS 10 中,Safari 视图控制器与 Safari 共享所有 cookie。)此方法在 Facebook 和 Google 应用程序等中使用——它们提供 Safari 视图控制器以获取会话令牌,用于后续的网络访问。

编辑:上述功能似乎由SFAuthenticationSession 处理。系统提示用户允许数据共享,并且 Safari 视图控制器会显示提供的 URL。您还提供了一个 URL 方案,打开的 URL 必须使用 SSO 令牌调用该方案。

【讨论】:

  • 但是如何从 SFSafariViewController 中检索 cookie?然后它们可以在应用程序的 NSHTTPCookieStorage 中使用吗?
  • @PeterLapisu 查看我的编辑。看来SFAuthenticationSession 是您所需要的。您无法访问 cookie 本身,但您可以使用 URL 方案传递您想要的任何数据。
【解决方案2】:

documentation 说:

Cookie 不会在 iOS 中的应用程序之间共享。

因此无法从 Safari 访问 cookie。

要访问与特定 URL 关联的本地应用程序 cookie,请使用 this method

func cookies(for URL: URL) -> [HTTPCookie]?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多