2011-01-07 13 views
5

Ich habe eine Anwendung, die eine Webansicht enthält. In der Webansicht muss sich der Benutzer über die Standard-Login-Schaltfläche und die Authentifizierung bei Facebook anmelden. Nachdem der Benutzer sich in der Webansicht angemeldet hat, enthält die OAUTH-Handshake-URL den Fehler "Zugriff verweigert ... Benutzer wurde abgelehnt". Wenn ich jedoch die gleiche URL im Kern-Browser besuche, funktioniert alles wie erwartet und der Benutzer wird erfolgreich eingeloggt. Ich gehe davon aus, dass es einige Methoden gibt, die ich im WebViewClient oder WebChromeClient implementieren muss, um meiner Webansicht volle Browserfähigkeit zu geben. Ich weiß jedoch nicht, was ich tun soll. Gedanken?Android WebView mit Facebook Login

+0

hey .. haben Sie jemals zu dieser Lösung? Ich stehe einem ähnlichen Problem gegenüber, kann aber keine gute Ressource finden, um es zu lösen. –

+0

Können Sie ein Codebeispiel dafür hinzufügen? –

Antwort

2

Nun können Sie das Facebook SDK für Ihre Implementierung verwenden.

im Grunde in einer Webansicht haben sie ihre Inhalte wie diese

gezeigt
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; 
     } 
Verwandte Themen