2011-01-07 7 views
5

Webview içeren bir uygulama var. Web görünümünde, kullanıcının varsayılan giriş butonu ve kimlik doğrulamasını kullanarak Facebook'a giriş yapması gerekir. Web sayfamda, kullanıcı oauth el sıkışma URL'sinde oturum açtıktan sonra "erişim reddedildi ... kullanıcı isteğinizi reddetti" hatası içeriyor. Ancak, çekirdek tarayıcıda aynı url'yi ziyaret ettiğimde, her şey beklendiği gibi çalışır ve kullanıcı başarıyla oturum açar. WebViewClient veya WebChromeClient uygulamasında web tarayıcımı tam bir tarayıcı yeteneği vermek için uygulamam gereken bazı yöntemler olduğunu varsayalım. Ancak ne yapacağımı bilmiyorum. Düşünceler?Android Web Günlüğü Facebook ile Giriş

+0

hey .. Hiç bulduk çözümü gibi içeriklerini göstermiştir? Benzer bir problemle karşılaşıyorum ama çözmek için iyi bir kaynak bulamıyorum. –

+0

Bunun için bir kod örneği ekleyebilir misiniz? –

cevap

2

Uygulamanız için facebook SDK'sini kullanabilirsiniz.

temelde bir WebView'da bunun için bu

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