对于iOS 11上的PWA,我们通过将登录详细信息存储在Service Worker Web缓存中来解决了在Safari中打开的外部第三方登录。
此功能在iOS 12中不再起作用(在撰写本文时为beta版)。我认为这是因为PWA现在拥有自己的服务工作者缓存,不再与Safari共享,但我无法确认。
有人知道在野生动物园和PWA之间是否可以共享服务工作者缓存吗?请注意,我们已经尝试过IndexedDB,但这不是共享的,当然也不是cookie。
据我所知,这意味着PWA已完全从safari中沙盒化,并且无法使第三方登录正常工作。有解决方案吗?
答案 0 :(得分:1)
我在推特上问了乔纳森·戴维斯(Jonathan Davis)(苹果网络技术传播者)。他说,iOS上的Web应用程序(“保存到主屏幕”应用程序)不与Safari共享数据存储。它们可作为独立于Safari的独立应用程序工作,并且无法在设备上共享它们之间的数据。
作为一种可能适合您的解决方案,我提出了Maciej Caputa撰写的文章。引用作者的想法是在Service Worker中创建一个伪造的终结点,该终结点将在POST请求中将数据保存在缓存中,并在GET请求中返回缓存的数据。链接到本文https://www.netguru.com/codestories/how-to-share-session-cookie-or-state-between-pwa-in-standalone-mode-and-safari-on-ios。
希望这个答案有帮助!
答案 1 :(得分:1)
从iOS 12.2(2019年3月)开始,这不再是问题,因为外部站点的链接现在已在PWA应用内浏览器中打开,并且返回链接指向PWA。结果,我现在可以使用第三方Auth0登录在iOS上部署PWA应用程序(该功能已经在Android和Windows上运行了。)
我从Maximiliano Firtman的this article了解到了这一点。