Ios 如何让密码自动填充与ASWebAuthenticationSession一起使用?

Ios 如何让密码自动填充与ASWebAuthenticationSession一起使用?,ios,swift,autofill,aswebauthenticationsession,Ios,Swift,Autofill,Aswebauthenticationsession,我有一个示例HTML表单,它遵循。使用内置Safari应用程序导航到没有应用程序的网页时,登录和注册表单的本机密码自动填充对话框将正确显示: 但是,在应用程序中查看时,相同的流不会触发登录或注册提交中的对话框。它简单地取消登录/注册屏幕,没有任何错误 以下是我的视图控制器的外观: class ViewController: UIViewController { @IBAction func didTapLoginButton() { let session = ASW

我有一个示例HTML表单,它遵循。使用内置Safari应用程序导航到没有应用程序的网页时,登录和注册表单的本机密码自动填充对话框将正确显示:

但是,在应用程序中查看时,相同的流不会触发登录或注册提交中的对话框。它简单地取消登录/注册屏幕,没有任何错误

以下是我的视图控制器的外观:

class ViewController: UIViewController {

    @IBAction func didTapLoginButton() {
        let session = ASWebAuthenticationSession(
            url: URL(string: "https://example.com/login.html")!,
            callbackURLScheme: "customscheme") {
                print($0, $1)
        }

        session.prefersEphemeralWebBrowserSession = true
        session.presentationContextProvider = self
        session.start()
    }
}

extension ViewController: ASWebAuthenticationPresentationContextProviding {

    func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
        view.window!
    }
}
是否有办法通过
ASWebAuthenticationSession
使密码自动填充与移动应用程序一起工作?我也尝试了
SFSafariViewController
,但问题相同。我有一本书。非常感谢任何帮助或经验

来自:

密码自动填充建议仅为应用程序的 关联的域,并且用户必须使用面ID或 访问这些凭据之前,请触摸ID

确保应用程序与您的域关联(代码中的
example.com
)。这将允许iCloud Keychain识别登录表单并建议该域的任何存储凭据

  • 如前所述,将应用程序与域关联
  • 如前所述,将
    html
    标记添加到登录表单中
  • 在启动
    ASWebAuthenticationSession
    之前,确保用户已在iOS设备上正确验证

  • 在Looong研究之后,我发现的唯一有效且干净的解决方案是按照建议添加登录后页面。这样就不会错过“保存凭据”提示


    不幸的是,我没有从iOS端找到任何解决方案,这将非常感谢,因为在我的情况下,由于项目限制,我无法更改服务器端。

    这不起作用,因为web凭据仅适用于本机文本字段。如果我们必须这样做,它将不适用于任何第三方OAuth服务,如Google、GitHub、Facebook等登录,因为他们必须与SDK的每个消费者更新相关文件。此外,这是另一个可行的解决方案: