我计划将应用程序从带有 的旧 OAuth 流程切换SFSafariViewController
到带有 iOS 11 的新流程SFAuthenticationSession
。登录不是问题,转移到新 API 花了我几分钟时间来实现。但是注销让我感到困惑。
如何?
我找不到任何提及想要在文档中的任何位置提供注销选项的内容。使用旧SFSafariViewController
的使cookies无效?不,它们不再与SFAuthenticationSession
. 一旦我重新启动身份验证会话,用户就会自动登录并且没有出路。那么如何启用注销呢?还是我只是忽略了一些完全明显的东西?
更新:我发现了一种技术意义上的“有效方式”,但它对用户来说很疯狂:在清除 cookie 的注销页面上打开一个新的 SFAuthenticationSession。但这意味着在注销时,警报视图会再次询问用户是否愿意通过该服务登录。如果选择是(“登录”),则打开 cookie 清除注销页面,用户必须手动关闭视图,这可以被完成处理程序捕获,我们知道我们可以再次打开登录视图.. 显示登录提示退出?我真的不喜欢这个解决方案。
有任何想法吗?我是否仍然忽略了一个完全明显的解决方案?
更新 2:由于到目前为止没有人对此问题有任何线索,这可能不是一件容易的事。我已经通过他们的报告工具向 Apple 提交了一个建议,以阐明如何处理此问题或将其构建到 API 中(如果不可用)。如果我得到答案,将发布。
更新 3:在进一步思考这个问题后,我们发现了另一种可能的(虽然也没有吸引力)解决方案,如果您可以影响 OAuth 提供程序的登录页面:使 cookie 的寿命很短。然后登录页面可以在没有自动登录的情况下打开。但是这会破坏在应用程序之间共享登录会话的整个目的......并且您需要能够影响登录页面。
更新 4:由于 iOS 12SFAuthenticationSession
已被弃用并被ASWebAuthenticationSession
. 但是ASWebAuthenticationSession
,在注销方面没有任何改变。这仍然是不可能的。和以前一样的问题。