如何与 iOS 扩展共享 Parse 登录会话?
Posted
技术标签:
【中文标题】如何与 iOS 扩展共享 Parse 登录会话?【英文标题】:How to share Parse login session with iOS extension? 【发布时间】:2018-03-18 20:42:00 【问题描述】:在为应用编写 ios 扩展时,是否可以与 iOS 扩展共享应用当前的 Parse 登录会话?
iOS 扩展与 iOS 应用程序捆绑在一起,但在单独的容器中运行。因此,当用户登录应用程序时,扩展程序无法访问该 Parse 实例。如果扩展再次登录,它将为用户创建一个额外的登录会话。
但是,扩展程序可以与应用程序共享一个公共数据容器。所以我想知道是否可以将PFSession.sessionToken
存储在共享容器中,并让扩展基于现有会话与 Parse Server 通信而无需登录?
【问题讨论】:
【参考方案1】:有两种可能的解决方案:
A) 优雅的方法
启用本地数据共享,在主 iOS 应用程序及其扩展程序之间共享持久数据。
// Enable data sharing in main app.
Parse.enableDataSharingWithApplicationGroupIdentifier("...")
// Enable data sharing in app extensions.
Parse.enableDataSharingWithApplicationGroupIdentifier("...", containingApplicaiton: "...")
Parse SDK 中的本地数据共享允许您共享持久的本地数据 您的主应用程序与其包含的扩展程序之间的数据, 包括键盘、分享/今天/照片/操作扩展和文档 提供者。
如docs 中所述。
B) 手动方法
登录应用后,将 Parse 会话令牌 PFUser.current().sessionToken
存储在加密的共享数据容器中。
然后扩展程序可以访问会话令牌并使用PFUser.become(sessionToken:)
继续会话。
【讨论】:
SDK支持数据共享IIRC,见:docs.parseplatform.org/ios/guide/#app-extensions以上是关于如何与 iOS 扩展共享 Parse 登录会话?的主要内容,如果未能解决你的问题,请参考以下文章
从 iOS 容器应用与应用扩展共享 Firebase 身份验证会话
支持在 IOS 应用中将 SAML 登录会话共享给不同的供应商
socket.io 身份验证与共享会话数据,io.use() 如何工作