ios - ASWebAuthenticationSession 无法修改警告对话框
问题描述
我正在尝试使用我的 iOS 应用程序实现一些不同的身份验证机制。关键是 iOS 应用程序是通过 App Store 分发的,并且它连接的服务器是开源的。为此,客户应设置自己的服务器。这很像 RocketChat 应用程序的工作方式。在设置服务器时,用户可以定义他们想要使用的身份验证提供程序。所有的身份验证数据、客户端 ID、机密等都存储在服务器端。服务器应用程序使用 passportjs 来支持各种不同的身份验证策略。这意味着像 oauth 之类的事情是通过服务器完成的,并且 oauth 回调会访问服务器 url。从那里,服务器可以在身份验证后创建/映射用户到本地帐户,在应用程序中控制授权/访问。
例如,当执行 oauth 时,url 将类似于:
https://customserver.com/authentication/google
从那里,passportjs 将重定向到谷歌进行身份验证。
关于这个问题,我需要在 iOS 中启动一些东西来启动身份验证。似乎在这种情况下使用正确的是ASWebAuthenticationSession。但是,当使用 ASWebAuthenticationSession 时,会出现一个警告对话框,指出初始的“customserver.com”:
[App] 想要使用“customserver.com”登录 这允许应用程序和网站共享有关您的信息
虽然这是真的,但服务器(使用 passportjs)将重定向到身份验证提供程序站点。在这种情况下,让我们以 google oauth 为例。这意味着这种模式警告非常令人困惑,它指出 customserver.com 是身份验证提供者,而实际上 passportjs 正在重定向到谷歌(或其他一些)身份验证提供者。
尽管 ASWebAuthenticationSession 使这个流程变得非常简单,但它没有而且可能无法监控到 google 的初始重定向这一事实让用户感到困惑。有了这个,我还研究了使用 SFSafariViewController 并在应用程序中创建一个深层链接以匹配重定向方案。虽然不如 ASWebAuthenticationSession 干净,但它确实有效,因为没有模式对话框警告用户。我什至可以创建自己的自定义模式对话框,如果我愿意,它会警告用户正确的身份验证站点。
这导致我提出几个问题。
在使用 ASWebAuthenticationSession 时,是否有办法绕过或自定义呈现给用户的消息?
假设#1 的答案是否定的,使用 SFSafariViewController 是解决该消息的可接受解决方案吗?
解决方案
推荐阅读
- python - 如何将表情符号代码转换为 unicode?
- google-apps-script - 如何向 Google 群组中的每个人授予 Google Apps Script 独立脚本的权限?
- swift - 'dispatch_get_main_queue()' 的模糊使用 - XMPP
- ios - UITabbar 图片未更新
- actions-on-google - Google Device Actions 中有关 ColorSetting 特征的查询
- pointers - 调用结构属性方法时Golang结构指针引用丢失
- nginx - 使用 HTTP PUT 上传的 NGINX 镜像文件
- c# - 带有 RSA 算法的 RSA256 Xml 验证失败
- c++ - 为什么我不能制作对象 m1?
- swift - 类函数可以返回类本身吗?