Как заставить автозаполнение пароля работать с 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 определить форму входа и предложить любые сохраненные учетные данные для этого домена.
Единственное рабочее и чистое решение, которое я нашел после долгих исследований, — это добавление страницы входа в систему, как предлагается здесь. Таким образом, запрос на сохранение учетных данных не будет отклонен.
К сожалению, я не нашел решения со стороны iOS, это было бы очень полезно, так как в моем случае я не могу изменить серверную часть из-за ограничений проекта.