Я пытаюсь сделать facebook похожей на функциональность в Android WebView (спецификация проекта не позволяет открывать браузер или выполнять какие-либо действия вне приложения).
Итак, ограничения заключаются в том, что это нужно делать в WebView. Мне удалось сделать это диалоговым окном, и после нажатия пользователем кнопки «Нравится» он (WebView) успешно перенаправляется (в том же представлении) на страницу входа в facebook. После успешной аутентификации WebView
(в диалоге) перенаправляется на пустую страницу с заголовком facebook.
Интересно, что когда пользователь покидает пустой диалог и снова нажимает кнопку «Нравится», он работает идеально (как и в отличие от него) — он каким-то образом сохраняет активную аутентификацию. Чтобы разрешить пустую страницу, я пробовал/использовал следующее:
- используя
WebViewClient
иshouldOverloadUrlForwarding
, чтобы сохранить весь процесс в одном и том же диалоговом окнеWebView
. - использование
WebChromeClient
для правильного выполнения JavaScript - без него после входа в систему невозможно поставить лайк/не понравиться. - пытался использовать
setUserAgentString()
для имитации других браузеров, таких как Chrome или Firefox попробовал обработку сертификата SSL Error (на уровне API 8) (на
WebViewClient
)@Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); }
используя (и все возможные комбинации из них)
webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
Пробовал также сохранять файлы cookie с помощью
CookieSyncManager
,CookieManager
и вручную.
Все это было безрезультатно. Я очень ценю любую помощь!