Android WebView con inicio de sesión en Facebook

Tengo una aplicación que contiene una vista web. Dentro de la webview, el usuario debe iniciar sesión en Facebook usando el botón de inicio de sesión predeterminado y la autenticación. En mi webview, después de que el usuario inicie sesión en la url de handshake oauth contiene un "acceso denegado … usuario denegado su solicitud" error. Sin embargo, cuando visito la misma url en el navegador central, todo funciona como se esperaba y el usuario obtiene con éxito una sesión. Supongo que hay algunos métodos que necesito implementar en WebViewClient o WebChromeClient para dar a mi webview la capacidad de navegación completa. Sin embargo, no sé qué hacer. ¿Pensamientos?

Bueno, puede utilizar el SDK de Facebook para su implementación.

Básicamente en una webview que han mostrado su contenido como este

private void setUpWebView(int margin) { LinearLayout webViewContainer = new LinearLayout(getContext()); mWebView = new WebView(getContext()); mWebView.setVerticalScrollBarEnabled(false); mWebView.setHorizontalScrollBarEnabled(false); mWebView.setWebViewClient(new FbDialog.FbWebViewClient()); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl(mUrl); mWebView.setLayoutParams(FILL); mWebView.setVisibility(View.INVISIBLE); mWebView.getSettings().setSavePassword(false); webViewContainer.setPadding(margin, margin, margin, margin); webViewContainer.addView(mWebView); mContent.addView(webViewContainer); } private class FbWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Util.logd("Facebook-WebView", "Redirect URL: " + url); if (url.startsWith(Facebook.REDIRECT_URI)) { Bundle values = Util.parseUrl(url); String error = values.getString("error"); if (error == null) { error = values.getString("error_type"); } if (error == null) { mListener.onComplete(values); } else if (error.equals("access_denied") || error.equals("OAuthAccessDeniedException")) { mListener.onCancel(); } else { mListener.onFacebookError(new FacebookError(error)); } FbDialog.this.dismiss(); return true; } else if (url.startsWith(Facebook.CANCEL_URI)) { mListener.onCancel(); FbDialog.this.dismiss(); return true; } else if (url.contains(DISPLAY_STRING)) { return false; } // launch non-dialog URLs in a full browser getContext().startActivity( new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } 
  • facebook login Servicio no registrado
  • Solicitando un permiso de Facebook rechazado de nuevo sin aparecer el diálogo de Facebook dos veces
  • Cómo usar los usuarios de prueba de facebook desde android
  • Facebook autoriza que no funcione dentro de Android Asynctask o Thread
  • Importación de apklib desde github con Maven
  • Cómo obtener información de perfil de usuario de Facebook API Android
  • Facebook-Notification like Pullable Screen
  • Propuesta de participación de Android y Facebook
  • Crear nuevo mensaje utilizando la API de gráfico de Facebook
  • Inicio de sesión único para Android Facebook
  • Acceso autenticado a WebAPI a través del token de Facebook de la aplicación para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.