【发布时间】:2017-11-09 17:17:34
【问题描述】:
我计划将应用程序从使用 SFSafariViewController 的旧 OAuth 流程切换到使用 iOS 11 的 SFAuthenticationSession 的新流程。登录不是问题,转移到新 API 花了我几分钟时间来实现。但是注销让我很困惑。
怎么做?
我在文档中找不到任何提及想要提供注销选项的内容。使用旧的SFSafariViewController 使 cookie 无效?不,它们不再与SFAuthenticationSession 共享。一旦我重新启动身份验证会话,用户就会自动登录并且没有出路。那么如何启用注销呢?还是我只是忽略了一些非常明显的东西?
更新: 我发现了一种技术意义上的“有效方式”,但它对用户来说很疯狂:在清除 cookie 的注销页面上打开一个新的 SFAuthenticationSession。但这意味着在注销时,警报视图会再次询问用户他是否希望通过服务登录。如果选择yes(“登录”),则打开 cookie 清除注销页面,用户必须手动关闭视图,这可以被完成处理程序捕获,我们知道我们可以打开再次登录视图..显示登录提示以注销?我真的不喜欢这个解决方案。
有什么想法吗?我是否仍然忽略了一个完全明显的解决方案?
更新 2:到目前为止,没有人对此问题有任何线索,这可能不是一件容易的事。我已经通过他们的报告工具向 Apple 提交了一个建议,以澄清如何处理这个问题,或者如果不可用,将其构建到 API 中。如果我得到答案会发布。
更新 3:在考虑了更多问题后,我们发现了另一种可能的(虽然也没有吸引力)解决方案如果您可以影响 OAuth 提供者的登录页面:使 cookie 的寿命非常短。然后登录页面可以在不自动登录的情况下打开。但是这会破坏在应用程序之间共享登录会话的整个目的......并且您需要能够影响登录页面。
更新 4:由于 iOS 12 SFAuthenticationSession 已被弃用并被 ASWebAuthenticationSession 取代。然而ASWebAuthenticationSession 并没有改变关于注销的任何内容。这仍然是不可能的。和以前一样的问题。
【问题讨论】:
-
这方面的任何进展,我都在同一条船上。考虑放弃 SFAuthenticationSession 而只使用 SFSavafiViewController 但这不是一个很好的解决方案。
-
嗨@iCediCe!遗憾的是没有 :( 到目前为止,Apple 没有回复。但我仍然决心得到答案。一旦我得到任何信息,我会及时更新这篇文章。
-
谢谢。不过这很疯狂。我正在使用 AppAuth 进行登录,即使 SFSavafiViewController 可用,我也要分叉并强制它使用 SFSavafiViewController。
-
不幸的是,我在使用 Google 登录 SDK 时遇到了同样的情况。他们最近切换到 SFAuthenticationSession。
-
@RiverbayChris 遗憾的是我仍然没有得到任何反馈..所以这个烦人的话题没有消息..
标签: ios swift oauth sfauthenticationsession