2017-10-20 137 views
2

使用NSHTTPCookieStorage我想读取和设置也使用Safari浏览器与应用在关联域中的域管理饼干

但是在关联的域的实况是相当稀疏联动的Associated Domain全球饼干,我只找到实况为共享凭据 https://developer.apple.com/documentation/security/shared_web_credentials

webcredentials:mydomain.com 

我会需要的是像水木清华

cookies:mydomain.com 

所以如何管理一个Associated Domain饼干?

+0

相关问题:https://stackoverflow.com/questions/532117/can-an-iphone-xcode-application-read-饼干,以前存储的,由野生动物园移动 – kelin

回答

1

我不相信这使用当前的API就可以了。

事实上,雷达exist恰好请求此功能。

根据我在iOS 11中看到的,当应用程序具有域关联并尝试打开SFSafariViewController实例时,系统向用户请求权限,如果授予此权限,则将域的cookie传递给Safari查看控制器实例。 (在iOS系统10,Safari浏览器视图控制器股所有cookie的Safari)。此方法在Facebook和谷歌应用程序所使用的,除其他-它们呈现Safari的视图控制器来获取会话令牌,其用于后续的网络访问。

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

+0

但你怎么retrive从SFSafariViewController饼干?他们是否可以在应用程序的NSHTTPCookieStorage中使用? –

+0

@PeterLapisu见我的编辑。看起来'SFAuthenticationSession'就是你需要的。你没有得到访问的cookie本身,而是你可以通过你想要使用URL方案的任何数据。 –

0

documentation说:

Cookies没有在iOS应用程序之间共享。

所以没有办法从Safari浏览器访问的cookie。

访问与特定URL使用this method相关的本地应用程序的cookie:

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