首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SFAuthenticationSession/ASWebAuthenticationSession和注销

SFAuthenticationSession/ASWebAuthenticationSession和注销
EN

Stack Overflow用户
提问于 2017-11-09 17:17:34
回答 5查看 15.9K关注 0票数 64

我正计划将一个应用程序从使用SFSafariViewController的旧SFSafariViewController流切换到使用iOS 11的SFAuthenticationSession的新流。登录不是问题,向新API的传输花了我几分钟时间来实现。然而,注销让我感到困惑。

多么?

我找不到任何关于想要提供在文档中任何地方登录的选项的消息。使用旧的SFSafariViewController使cookie失效吗?不,他们不再和SFAuthenticationSession分享了。一旦我重新启动身份验证会话,用户就会自动登录,没有出路。那么如何启用注销呢?还是我完全忽略了一些显而易见的东西?

更新:我在技术上找到了一种“工作方式”,但这对用户来说是疯狂的:在注销页面上打开一个清除cookie的新SFAuthenticationSession。但这意味着当注销警报视图时,再次询问用户是否愿意通过该服务登录。如果选择是(“登录”),则会打开cookie清除注销页面,用户必须手动关闭视图,该视图可以被完成处理程序捕获,我们知道我们可以再次打开登录视图。是否显示要注销的登录提示?我真的不喜欢这个解决方案。

有什么想法吗?我是不是还忽略了一个显而易见的解决方案?

更新2:由于到目前为止还没有人知道这个问题,这可能不是一件容易的事情。我已经通过他们的报告工具向苹果提出了一个建议,要么澄清如何处理这个问题,要么将其构建到API中,如果无法获得。如果我得到答案的话会发帖的。

更新3:在仔细考虑了这个问题之后,我们找到了另一个可能的解决方案(虽然也没有吸引力),如果您可以影响OAuth提供者的登录页面的话:让cookies非常短暂。然后,无需自动登录即可打开登录页。然而,这却扼杀了应用程序之间共享登录会话的全部目的。你需要能够影响登录页面。

更新4:由于iOS 12被废弃,SFAuthenticationSessionASWebAuthenticationSession取代。但是,ASWebAuthenticationSession在注销方面没有任何改变。但还是不可能。和以前一样的问题。

EN

回答 5

Stack Overflow用户

发布于 2020-09-18 20:57:37

使用ASWebAuthenticationSession,在调用.start()之前将.prefersEphemeralWebBrowserSession设置为true将迫使用户在浏览器会话中输入凭据。虽然这与注销不一样,但这将允许新用户在启动下一次会话时使用不同的凭据登录。

票数 8
EN

Stack Overflow用户

发布于 2020-04-26 09:06:31

更新2020年11月:我们使用@react本机社区/ cookies来清除cookies作为解决方案。请参阅下面的片段作为示例。

代码语言:javascript
复制
import CookieManager from '@react-native-community/cookies';

CookieManager.clearAll().catch(e => alert("Error deleting cookies during logout"))

之前的答案是从2020年4月起的。这可能对任何挣扎于此的人都有帮助。我花了几个小时测试不同的选项,浏览应用程序,查看它们是如何做到的,并阅读论坛/讨论。

  1. 我还没有找到一种以编程方式清除cookie的方法,而且也没有关于Apple的文档。
  2. 以FB为例。从Safari登录和删除FB应用程序都没有帮助。如果您以前通过ASWebAuthenticationSessionSFAuthenticationSession登录过一次,下载的任何应用程序都不会要求登录FB。
  3. 如果用户询问如何强制登录(尽管这不是您作为开发人员的问题),您可以指向他们:设置->、Safari、->、高级->网站数据、->、删除所有网站数据(或仅为提供者提供的数据)。
  4. 如果您的用例需要切换用户(比如在我的例子中,我们使用Azure,用户共享1部手机),那么您有2个选项。( A)使用注销端点打开ASWebAuthenticationSession (如前所述,这是非常奇怪的UX)。( B)将Safari作为一个单独的应用程序打开(而不是在您的应用程序中),并在那里进行登录/注销。不幸的是,如果OAuth提供程序不支持注销时的重定向,则无法在注销后将用户重定向到应用程序。

这很糟糕,因为这阻止了开发人员在iOS上为业务需要在多个用户之间共享设备并使用OAuth作为身份提供者的用例创建良好的体验。

票数 7
EN

Stack Overflow用户

发布于 2018-10-04 21:36:55

我遇到的“最佳”解决方案之一是在Safari (不是SFSafariViewController)中打开注销页面。因为ASWebAuthenticationSession与Safari可靠地共享cookie,因此过期/删除的cookie也会影响应用程序。

有关更多详细信息,请参阅这个GitHub页面

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47207914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档