SFSafariViewController
切换到使用 iOS 11 的新流程 SFAuthenticationSession
。登录不是问题,转换到新API只需要我几分钟的时间。但是退出登录让我感到困惑。如何退出登录?
文档中没有提及想要在任何地方提供注销选项。使用旧的
SFSafariViewController
来使cookie无效吗?不行,它们不再与SFAuthenticationSession
共享了。一旦我重新启动认证会话,用户就会自动登录,没有任何办法可以退出。那么如何启用注销?还是说我完全忽视了某些显而易见的事情?更新: 我在技术上找到了一个“可行”的方法,但对用户来说很疯狂:在注销页面上打开一个新的SFAuthenticationSession,以清除cookie。但是这意味着当注销时,警报视图再次询问用户是否想通过该服务进行登录。如果选择“是”(“登录”),则打开清除cookie的注销页面,用户必须手动关闭视图,这可以被完成处理程序捕获,我们知道可以再次打开登录视图.. 显示注销提示?我真的不喜欢这个解决方案。
有什么想法吗?还是说我还在完全忽视某些显而易见的解决方案?
更新2:由于迄今为止没有人对这个问题有任何线索,所以这可能不是一个容易的问题。我通过他们的报告工具向苹果提出了建议,要么澄清如何处理此问题,要么将其构建到API中(如果不存在)。如果我得到答案,我会发布的。
更新3:经过更深入的思考,我们发现另一个可能的(虽然也不太理想的)解决方案是,如果您可以影响OAuth提供者的登录页面,则使cookie的生命周期非常短。然后可以打开登录页面而不会自动登录。但是这会破坏在应用程序之间共享登录会话的整个目的..并且您需要能够影响登录页面。
更新4:自iOS 12起,
SFAuthenticationSession
已被弃用,并被ASWebAuthenticationSession
取代。但是关于注销仍然没有变化。仍然不可能。与之前一样的问题。