我正在尝试实现一种从 Safari 和 App 交换 cookie 的方法。我正在使用SFAuthenticationSession
,因为 cookie 共享被禁用。我通读了该主题,似乎这是实现这一目标的最佳解决方案。没有太多博客或存储库可以用作示例。
我已经在服务器端实现了更改重定向,如下所示。
首先,我将 cookie 存储为https://example.com/?cookie=12345
. 然后从应用程序我启动一个身份验证会话,指向https://example.com/getcookie
重定向到customapp://dummy/cookies?cookie=12345
一旦表明这一点。快速实现如下(感谢this):
let callbackUrl = "customapp://dummy/cookies"
let authURL = "https://example.com/getcookie"
self.authSession = SFAuthenticationSession(url: URL(string: authURL)!, callbackURLScheme: callbackUrl, completionHandler: { (callBack:URL?, error:Error? ) in
guard error == nil, let successURL = callBack else {
return
}
let cookie = self.parseQuery(url: (successURL.absoluteString), param: "cookie")
print(cookie!)
})
self.authSession?.start()
您可能会注意到我对登录不感兴趣,而是对以前存储的 cookie 感兴趣。
有人可以请教吗?我的问题是,虽然网站正在重定向,但没有调用完成处理程序,所以我无法解析回调 url。
更新
我发现我在Info.plist
. 在向其添加自定义协议后,将调用处理程序。尽管如此,处理程序只是在我第二次参与身份验证会话时才被调用。
有什么线索吗?