Android WebView Facebook Login (всплывающие / перенаправленные проблемы)

как все?

Я работаю над простым мобильным приложением, использующим WebView. На моем веб-сайте используется макет, который создает внешний вид собственного приложения. Я также разрешаю пользователям входить в систему со своей учетной записью facebook на моем сайте. Вот мои сценарии

** РАБОТЫ ** С ПК / Хром: можно получить доступ к URL-адресу мобильного сайта, войти в систему с помощью facebook, который открывает всплывающее диалоговое окно, либо на A.) Login, либо на B.), если пользователь зарегистрирован FB, приглашение пользователя принять

** РАБОТЫ ** Из телефона / Chrome: можно получить доступ к URL-адресу мобильного сайта, войти в систему с помощью facebook, который открывает новую вкладку с A.) Логин или B.), если пользователь зарегистрирован в FB, попросите пользователя принять

** ПРОБЛЕМА! ** From Phone / APK: загружает веб-сайт в WebView, нажимает логин с facebook, открывает страницу входа в facebook в веб-просмотр, но как только я ввожу данные и пытаюсь войти в систему, ничего не происходит. Если я пойду на свой домашний экран и снова открою приложение, он войдет в систему, используя данные, которые я ранее отправил

Поэтому в основном я говорю о том, что в APP, когда я покидаю свой URL-адрес веб-сайта и перехожу на веб-сайт facebook, чтобы ввести данные в facebook, чтобы войти в систему с ним и нажать логин – по какой-то причине он не перенаправляет обратно на мой сайт. Я собирал свои волосы, пытаясь найти решение этого вопроса, я также много раз искал здесь и в других местах, но не смог найти работоспособного решения, я уверен, что многие другие люди могут испытывать подобные проблемы с Facebook или другие услуги

Вот мой код (изначально был намного проще, но теперь я использую то, что нашел в другой теме, посвященной этой проблеме, однако это все еще не работает – я также хотел бы упомянуть, что с этой частью кода, которую я нашел , Когда TARGET_URL загружается с телефона, телефон переадресует его на мобильную версию веб-сайта, что, поскольку это то, как работает код, заставляет его открываться в браузере вместо моего WebView)

Я полностью смущен = /

public class MainActivity extends Activity { /* URL saved to be loaded after fb login */ private static final String target_url="http://www.moneygirlsmusic.tv/app/index.php?do=/mobile/"; private static final String target_url_prefix="www.moneygirlsmusic.tv/app/index.php?do=/mobile/"; private Context mContext; private WebView mWebview; private WebView mWebviewPop; private FrameLayout mContainer; private long mLastBackPressTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // final View controlsView = // findViewById(R.id.fullscreen_content_controls); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); mWebview = (WebView) findViewById(R.id.webview); //mWebviewPop = (WebView) findViewById(R.id.webviewPop); mContainer = (FrameLayout) findViewById(R.id.webview_frame); WebSettings webSettings = mWebview.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setAppCacheEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setSupportMultipleWindows(true); mWebview.setWebViewClient(new UriWebViewClient()); mWebview.setWebChromeClient(new UriChromeClient()); mWebview.loadUrl(target_url); mContext=this.getApplicationContext(); } private class UriWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { String host = Uri.parse(url).getHost(); Log.d("shouldOverrideUrlLoading", url); if (host.equals(target_url_prefix)) { // This is my web site, so do not override; let my WebView load // the page if(mWebviewPop!=null) { mWebviewPop.setVisibility(View.GONE); mContainer.removeView(mWebviewPop); mWebviewPop=null; } return false; } if(host.equals("m.facebook.com") || host.equals("www.facebook.com")) { return false; } // Otherwise, the link is not for a page on my site, so launch // another Activity that handles URLs Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { Log.d("onReceivedSslError", "onReceivedSslError"); //super.onReceivedSslError(view, handler, error); } } class UriChromeClient extends WebChromeClient { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { mWebviewPop = new WebView(mContext); mWebviewPop.setVerticalScrollBarEnabled(false); mWebviewPop.setHorizontalScrollBarEnabled(false); mWebviewPop.setWebViewClient(new UriWebViewClient()); mWebviewPop.getSettings().setJavaScriptEnabled(true); mWebviewPop.getSettings().setSavePassword(false); mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mContainer.addView(mWebviewPop); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(mWebviewPop); resultMsg.sendToTarget(); return true; } @Override public void onCloseWindow(WebView window) { Log.d("onCloseWindow", "called"); } } 

Я забыл включить свои предыдущие ресурсы, чтобы попытаться понять это

  • Создание функции входа в facebook с помощью Android Webview. Создание входа в facebook с помощью Android Webview.

  • Android WebView для Facebook, как кнопка

    Android WebView для Facebook, как кнопка

В android 6, работающем на некоторых мобильных телефонах, вы должны добавить это в свой Java-код для перенаправления. В противном случае он не перенаправляется и ничего не происходит.

 webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } 

});