Как заставить автозаполнение пароля работать с ASWebAuthenticationSession? - PullRequest
3 голосов
/ 25 мая 2020

У меня есть образец формы HTML, который соответствует требованиям к автозаполнению пароля . При переходе на веб-страницу без приложения с использованием встроенного приложения Safari в собственных диалоговых окнах автозаполнения пароля для форм входа и регистрации правильно отображаются:

enter image description here

Однако при просмотре в приложении тот же поток не вызывает диалоговое окно ни при входе в систему, ни при отправке регистрации. Он просто закрывает экран входа / регистрации без каких-либо ошибок.

Вот как выглядит мой контроллер представления:

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, но та же проблема. У меня есть приложение sample iOS здесь . Любая помощь или опыт приветствуются!

1 Ответ

2 голосов
/ 30 мая 2020

Из документов :

Password AutoFill рекомендует учетные данные только для домена, связанного с вашим приложением, и пользователь должен пройти проверку подлинности с помощью Face ID или Touch ID перед доступом к этим учетным данным.

Убедитесь, что приложение связано с вашим доменом (example.com в вашем коде). Это позволит связке ключей iCloud идентифицировать форму входа и предлагать любые сохраненные учетные данные для этого домена.

  1. Свяжите свое приложение с доменом, как описано здесь .
  2. Добавьте теги html в форму входа, как описано здесь .
  3. Убедитесь, что пользователь правильно аутентифицирован на устройстве iOS перед запуском ASWebAuthenticationSession.
...