Я работаю над приложением Android для существующего сайта php. Веб-сайт имеет путь входа через Facebook, и как только пользователи входят в систему, они перенаправляются на главную страницу. Проблема возникает, когда я хочу войти в свое приложение (я уже создал приложение с веб-обзором, чтобы иметь возможность видеть веб-сайт внутри приложения). Теперь проблема возникает, когда я нажимаю на кнопку для входа в систему (с помощью приложения). На сайте все работает хорошо. Однако в веб-просмотре после ввода моей информации во входные данные экран становится белым, и хотя я жду или закрываю приложение и снова открываю его, когда нажимаю кнопку для входа, появляется белый экран. Я предполагаю, что это из-за всплывающего окна, которое открывает пользователя для входа в Facebook, а затем на веб-сайт. Тем не менее, как я мог решить эту проблему? Я не использую кнопку входа в Facebook, но свою собственную. Есть ли способ избежать открытия всплывающего окна, открыть ссылку в iframe или что-то еще, и как только ответ утвердителен для входа в систему, закройте этот iframe / что угодно и перенаправьте пользователя в main.php? Я сейчас волнуюсь, потому что не могу найти никакого ответа в переполнении стека для этой конкретной проблемы. Спасибо заранее!
Я не знаю, если это поможет тебе. Пожалуйста, попробуйте это.
String redirect_uri = "https://m.facebook.com/v2.1/dialog/oauth/read";
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
if(host.equals("m.facebook.com") || host.equals("www.facebook.com")){
return false;
}else {
return super.shouldOverrideUrlLoading(view, url);
}@Override
public void onPageFinished(WebView view, String url) {
progressBar.setVisibility(View.INVISIBLE);
if (url.startsWith(redirect_uri)) {
mWebviewPop.loadUrl(url_with _fblogin);
new CountDownTimer(4000,4000) { // giving the webview a 4s delay to complete the process.
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
if(mWebviewPop != null){
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
mWebview.loadUrl(url_with _fblogin); // mWebview is the orginal webview.
}
}
} .start();
}
super.onPageFinished(view, url);
}
Создайте onCreateWindow для обработки всплывающего окна следующим образом Заставить логин Facebook работать с Android Webview .Здесь mWebviewPop является веб-представлением onCreateWindow. Надеюсь это поможет.
Других решений пока нет …