4

我有一个遵循密码自动填充要求的示例 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但同样的问题。我在这里有一个示例 iOS 应用程序。非常感谢任何帮助或经验!

4

2 回答 2

1

文档

密码自动填充仅建议您的应用关联域使用凭据,并且用户必须在访问这些凭据之前使用 Face ID 或 Touch ID 进行身份验证。

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

  1. 将您的应用与域相关联,如此所述。
  2. html标签添加到您的登录表单中,如此所述。
  3. 在启动ASWebAuthenticationSession.
于 2020-05-30T14:50:35.860 回答
0

经过长时间的研究后,我发现的唯一有效且干净的解决方案是按照此处的建议添加登录后页面。这样保存凭据提示将不会被忽略。

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

于 2020-12-05T11:21:54.393 回答