2013-01-18 123 views
1

我正在開發一款新的Android應用程序,並使用網頁視圖來查看我的網站在一個網站的網頁存在與Facebook空白空白頁的Android WebView中使用Facebook登錄的JavaScript

  • 後的鏈接登錄後直接登錄,它返回一個空白,embty的WebView
  • 我看到幾個主題在這裏就同樣的問題,但它是不完全像我 請注意,如果我使用正常的桌面瀏覽器的問題是不存在的

我假設有一個web視圖的財產應進行調整,下面我的WebView代碼

webView1=(WebView)findViewById(R.id.webView1); 
webView1.setWebViewClient(new MyWebViewClient()); 
WebView webView1 = (WebView) findViewById(R.id.webView1); 
webView1.setWebChromeClient(new WebChromeClient()); 
webView1.getSettings().setAppCacheEnabled(true); 
webView1.getSettings().setDatabaseEnabled(true); 
webView1.getSettings().setDomStorageEnabled(true); 
webView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
webView1.getSettings().setGeolocationEnabled(true);   
webView1.loadUrl("http://www.myactivepoint.com/mobile/maplp.asp"); 

我真的approciate您的支持

+0

你解決了嗎?我有同樣的問題 –

+0

我相信這是由默認情況下的WebView造成的「單視圖」請參閱https://stackoverflow.com/questions/12648099/making-facebook-login-work-with-an-android-webview/ 19068076#19068076 – rogerdpack

回答

1

我跟你有類似的經歷。我通過以下方法解決了這個問題。

public class CustomWebViewClient extends WebViewClient{  
    @Override 
    public void onPageFinished(WebView view, String url) { 

     if(url.startsWith("https://m.facebook.com/dialog/oauth")){ 
      String redirectUrl = "http://www.mydomain.com/myReturnUrl"; 
      view.loadUrl(redirectUrl); 
      return; 
     } 
     super.onPageFinished(view, url); 
    }} 

,只是把它添加到您的WebView

webview.setWebViewClient(new CustomWebViewClient()); 
+0

在你能做到這一點之前,你必須首先檢查一下。 (app settings-> basic-> Mobile Web-> Enter the return_url) –

+0

對我無效 – Casper

1

這是我的解決方案。成功登錄後,您必須重定向頁面。您可以從Facebook URL中的refsrc參數中獲取地址,但有時(例如,下次嘗試登錄時)refsrc缺失,因此我使用參數。如果需要,您可以覆蓋URL地址。見代碼:

webView.setWebViewClient(new WebViewClient() 
{ 
    @Override 
    public void onPageFinished(final WebView view, final String url) 
    { 
     if(getActivity()!=null) 
     { 
      if(url.contains("facebook.com") && url.contains("dialog/oauth") && 
       (url.contains("&refsrc") || url.contains("&domain"))) 
      { 
       Uri uri = Uri.parse(url); 
       String callbackUrl = uri.getQueryParameter("refsrc"); 
       if(callbackUrl==null) 
        callbackUrl = "http://" + uri.getQueryParameter("domain"); 
       view.loadUrl(callbackUrl); // callback URL 
      } 
     } 
    } 
} 
+0

問題在於它會在登錄後關閉權限對話框 – Marc