SFSafariViewController предлагает сохранить пароль, а не параметры - PullRequest
0 голосов
/ 01 мая 2020

Я реализую OAuth2 authentication using SFSafariViewController после того, как Apple отклонила мое решение, используя SFAuthenticationSession и ASWebAuthentication.

Приложение открывает URL-адрес для проверки подлинности, и все работает как должно. Единственное, что я нахожу странный , это приглашение Save Password or Not now.

enter image description here

Это отображается только один раз и никогда больше. Но я не могу найти где-нибудь задокументированное, как мы можем управлять этими кнопками, и нет никаких функций делегата, которые бы указывали, была ли активирована одна из двух опций.

Есть идеи, как решить эту проблему. У меня такое чувство, что Apple откажется от этого решения, поскольку На моем коде после того, как у меня будет success redirectURL and I fetch the AccessToken I take the user into the app.

@objc private func safariLoginCallBack(_ notification: Notification) {

        guard let url = notification.object as? URL else {
            return
        }

        let result = openIDHandler.getCodeFromCallbackUrl(url: url, state: state)

        guard result.code != nil else {

            self.hideLoader()
            safariVC.dismiss(animated: true, completion: nil)
            self.alertController(title: "Error", msg: ErrorConstants.ErrorMessages.SomethingWentWrong, viewController: self)

            return
        }

        openIDHandler.downloadAndSaveTokens(code: result.code!, codeVerifier: codeVerifier) { (error) in
            KeychainWrapper.standard.set(true, forKey: KeychainConstants.AppUsage.userHasLoggedInOnce)

            if let error = error {
                self.hideLoader()
                self.alertController(title: "Error", msg: error.localizedDescription, viewController: self)
            } else {

                self.authenticationLayer.fetchUserAccountDetailWithCompletionHandler { (userDetail, error, statusCode) in
                    if let error = error {
                        self.hideLoader()
                        if statusCode == 401 || statusCode == 403 {
                            self.alertController(title: "Error", msg: ErrorConstants.ErrorMessages.CredentialsError, viewController: self)
                            return
                        } else {
                            self.alertController(title: "Error", msg: error.localizedDescription, viewController: self)
                            return
                        }
                    } else {

                        Storage.shared.account = userDetail
                        ClientAnalytics.sendRegisterButtonEventOnLogin()
                        self.setNewRootViewController(VCIdentifier: KeychainConstants.ViewControllerIdentifier.tabController)
                    }
                }
            }
        }

Есть идеи, как мне решить эту проблему?

Заранее спасибо.

...