在 iOS 11 中使用 SFAuthenticationSession 创建 SSO
Create SSO using SFAuthenticationSession in iOS 11
我正在开发两个 iOS 应用程序,它们共享相同的钥匙串令牌,当用户通过在 Web 视图中输入用户名和密码登录任一应用程序时,它们会收到这些令牌。保存在钥匙串中的令牌有几个 hours/days 的时间限制 - 当用户使用该应用程序并制作 request/enters 在浏览器中打开的项目时,它们会被刷新。
在 iOS11 发布之前,应用程序中的 Web 视图是一个 SFSafariViewController 实例,它非常方便,因为它在应用程序之间共享 cookie,一旦用户在浏览器中登录在一个应用程序中,他会自动登录另一个应用程序,从而实现 SSO 体验。
在 iOS11 中,SFSafariViewController 的行为发生了变化,它不再在我的两个应用程序中的不同 SFSafariViewController 实例之间共享 cookie。相反,Apple 希望我们使用 SFAuthenticationSession 来实现相同的行为。
在我的应用程序中,我有大约 50 行的 table,几乎所有行都在 SFSafariViewController 中打开不同的 URL。所以现在,在 iOS 11 中,我需要每次都创建一个新的 SFAuthenticationSession 实例(实例创建后 URL 不能更改),为了实际显示 web 视图,我需要在此实例上调用 start() 方法。但是,这个方法只能在同一个实例上调用一次(否则它将 return 'false' 什么都不做),并且每次被调用时,它都会弹出 "myapp" 的通知想使用 "mydomain.com" 登录。
因此,这意味着我的用户在 table.
中的每一行中每次点击都会看到此警告消息
有没有办法让我的应用只显示一次同意警告消息,例如是第一次还是什么?我希望我的用户在我的两个应用程序中获得 SSO 体验,这就是我首先使用 SFSafariViewController 的原因,但我不希望他们在应用程序中的每次点击时看到这个恼人的警报。
目前无法使用 SFAuthenticationSession
使警告消息只显示一次,我们的应用遇到了同样的问题。
我和许多其他人一起向 Apple 提交了一个关于这个的错误,要求他们像你建议的那样只显示一次。 this GitHub thread 结尾讨论警报。
我正在开发两个 iOS 应用程序,它们共享相同的钥匙串令牌,当用户通过在 Web 视图中输入用户名和密码登录任一应用程序时,它们会收到这些令牌。保存在钥匙串中的令牌有几个 hours/days 的时间限制 - 当用户使用该应用程序并制作 request/enters 在浏览器中打开的项目时,它们会被刷新。
在 iOS11 发布之前,应用程序中的 Web 视图是一个 SFSafariViewController 实例,它非常方便,因为它在应用程序之间共享 cookie,一旦用户在浏览器中登录在一个应用程序中,他会自动登录另一个应用程序,从而实现 SSO 体验。
在 iOS11 中,SFSafariViewController 的行为发生了变化,它不再在我的两个应用程序中的不同 SFSafariViewController 实例之间共享 cookie。相反,Apple 希望我们使用 SFAuthenticationSession 来实现相同的行为。
在我的应用程序中,我有大约 50 行的 table,几乎所有行都在 SFSafariViewController 中打开不同的 URL。所以现在,在 iOS 11 中,我需要每次都创建一个新的 SFAuthenticationSession 实例(实例创建后 URL 不能更改),为了实际显示 web 视图,我需要在此实例上调用 start() 方法。但是,这个方法只能在同一个实例上调用一次(否则它将 return 'false' 什么都不做),并且每次被调用时,它都会弹出 "myapp" 的通知想使用 "mydomain.com" 登录。 因此,这意味着我的用户在 table.
中的每一行中每次点击都会看到此警告消息有没有办法让我的应用只显示一次同意警告消息,例如是第一次还是什么?我希望我的用户在我的两个应用程序中获得 SSO 体验,这就是我首先使用 SFSafariViewController 的原因,但我不希望他们在应用程序中的每次点击时看到这个恼人的警报。
目前无法使用 SFAuthenticationSession
使警告消息只显示一次,我们的应用遇到了同样的问题。
我和许多其他人一起向 Apple 提交了一个关于这个的错误,要求他们像你建议的那样只显示一次。 this GitHub thread 结尾讨论警报。