Как заставить автозаполнение пароля работать с ASWebAuthenticationSession?

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

2 ответа

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

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

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

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

Единственное рабочее и чистое решение, которое я нашел после долгих исследований, — это добавление страницы входа в систему, как предлагается здесь. Таким образом, запрос на сохранение учетных данных не будет отклонен.

К сожалению, я не нашел решения со стороны iOS, это было бы очень полезно, так как в моем случае я не могу изменить серверную часть из-за ограничений проекта.

Другие вопросы по тегам