2011-01-07 40 views
5

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

+0

solución hey .. ¿alguna vez has encontrado para esta? Estoy enfrentando un problema similar pero no puedo encontrar ningún recurso bueno para resolverlo. –

+0

¿Se puede agregar una muestra de código para esto? –

Respuesta

2

Bien, puede usar el SDK de Facebook para su implementación.

básicamente en una vista web que han demostrado su contenido como esto

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; 
     } 
Cuestiones relacionadas