iOS WKWebview Facebook не работает должным образом после успешного входа в систему - PullRequest
0 голосов
/ 29 марта 2019

Я работал с приложением, в котором мне нужно было войти в систему и выполнять все пользовательские функции через WKWebview.Для входа в систему пользователь может использовать учетную запись Facebook рядом с учетной записью приложения.Я нашел какой-то сценарий при реализации процесса входа в систему через Facebook.На моей странице входа есть кнопка Facebook, и из приложения мы можем обнаружить окно или всплывающий запрос следующим способом:

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {

}

Из этого делегата я обнаружил странное поведение.Из другого собственного приложения мы передаем URL-адрес входа в веб-браузер Safari, а после входа в систему с помощью Safari браузер перенаправляет пользователя в приложение с токеном доступа.Но из wkwebview я обнаружил, что логин - это успех в сафари, но он не перенаправляет в приложение.Для этой проблемы некоторые посты / блоги предлагают создать новый wkwebview внутри метода createWebViewWith.Я сделал это, и мне удалось создать временное веб-представление и закрыть его, когда вход в систему будет успешным.

Но после входа в приложение через wkwebview у меня есть сообщение, где пользователь может поделиться им через fagebook.Когда пользователь нажимает кнопку «Поделиться», также вызывается метод createWebViewWith ().Но я ожидаю, что всплывающее окно диалогового окна «Поделиться» прямо сейчас, потому что у меня есть всплывающая ссылка, и я уже из метода definePolicyFor navigationAction ().Если я создаю другое веб-представление с доступной ссылкой, я вижу только домашнюю страницу Facebook.

Теперь, если отправить пользователя в сафари по ссылке, используя UIApplication.shared.open (url ...), я вижу толькокнопка facebook.Затем я должен нажать кнопку еще раз, и это создает новое окно в сафари в show share dialoug / popup.Проверьте следующий снимок экрана:

enter image description here

enter image description here

enter image description here

Моя ссылка общего доступа, которую я получаю из метода definePolicyFor navigationAction (): https://www.facebook.com/plugins/share_button.php?app_id=170873263118451&channel=https%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2Fd_vbiawPdxB.js%3Fversion%3D44%23cb%3Df207cc91ea15cf%26domain%3Dwww.domain.com.au%26origin%3Dhttps%253A%252F%252Fwww.domain.com.au%252Ff174d245fcc403a%26relation%3Dparent.parent&container_width=0&href=https%3A%2F%2Fwww.domain.com.au%2FFbUtil%2FPromoCodeShare%3Fcode%3DPS39144&locale=en_US&sdk=joey&type=button_count

В createWebViewWith () я получаю navigation.request.url: https://m.facebook.com/home.php

Я вижу некоторые проблемы / сценарии, связанные с этим, например:

https://samwize.com/2016/12/06/pitfall-using-wkwebview-for-facebook-login/

Аутентификация Facebook в UIWebView не перенаправляет обратно на исходную страницу на моем сайте с просьбой авторизации

https://github.com/dpa99c/cordova-plugin-inappbrowser-popup-bridge/issues/7

Вопрос: Почему я получаю эту промежуточную кнопку общего доступа даже после нажатия кнопки «Поделиться» с веб-сайта (из wkwebview)?Я что-то пропустил ?Как показать этот диалог или всплывающее окно после нажатия?

...