2013-08-28 39 views
3

在我的android應用程序用戶可以喜歡我的臉書頁面。因此,我使用加載包含類似框的Facebook的網頁的web視圖。頁面加載順利進入網頁視圖,然後會發生以下情況:webview將不記得Facebook登錄

  1. 的WebView加載我的網頁上有樣箱
  2. 一個網站通過點擊Like按鈕將用戶重定向至Facebook登錄頁面
  3. 登錄後用戶再次重定向到我的自定義頁面一樣
  4. 但點擊按鈕一樣,當用戶再次重定向到Facebook的登錄頁面

,所以我期望的是,喜歡是可能的登錄後。似乎不知道如何webview不記得登錄。因此,我需要做些什麼來修復這個問題。

下面的屏幕截圖序列顯示發生的事情: enter image description here

我想避免使用Facebook SDK爲Android!特別是這個程序在我的iPhone版本的應用程序中效果非常好。

下面是一些代碼,用來實現我想要的功能:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final WebView fbWebView = (WebView) findViewById(R.id.facebookWebView); 
     fbWebView.getSettings().setJavaScriptEnabled(true); 

     fbWebView.setWebViewClient(new WebViewClient() { 
      @Override 
      public WebResourceResponse shouldInterceptRequest (WebView view, String url) { 
       Log.d("call url", url); 
       if (url.contains("login.php?skip_api_login")) { 
        fbWebView.loadUrl("http://www.example.de/iphone_facebook_like_page.html"); 
        return null; 
       } 

       if(url.contains("user_successfully_liked")) 
        fbWebView.loadUrl("http://www.example-success.de"); 
       return null; 
      } 
     }); 

     fbWebView.loadUrl("http://www.example.de/iphone_facebook_like_page.html"); 

    } 

編輯:我也嘗試了以下接受Cookie但沒有這個工作

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     CookieSyncManager.createInstance(this); 
     CookieSyncManager.getInstance().startSync(); 
     CookieManager.setAcceptFileSchemeCookies(true); 
     CookieManager.getInstance().setAcceptCookie(true); 
     //rest is the same... 

Overrding沒有工作要麼

@Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
     view.loadUrl(url); 
     return true; 
     } 
+0

好有上,這樣一個線程解決了這個問題:跳到Facebook的空白頁] [1] [1]:HTTP:/ /stackoverflow.com/questions/5108088/android-webview-for-facebook-like-button?rq=1 – toom

回答

0

你有這個錯誤,因爲WebView不記得廚師IES。閱讀這個問題上的SO:WebView and Cookies on Android

+1

我嘗試了所有在線程中提供的「解決方案」,沒有任何工作。我更新了我的問題,顯示了我的嘗試。 – toom

0

不知道,如果你已經得到了解答您的問題,但我想的these instructions組合和下面的代碼,這爲我工作:

@Override 
protected void onCreate(Bundle bundle) { 
super.onCreate(bundle); 
... 
WebView webView = new WebView(); 
WebSettings settings = webView.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setAppCacheEnabled(true); 
settings.setDomStorageEnabled(true); 
settings.setGeolocationEnabled(true); // this last one is probably optional 
webView.setWebViewClient(new WebViewClient()); 
webView.loadUrl(<your url here>); 
... 
} 

你然後需要調用上述鏈接中概述的CookieSyncManager單例類的相應方法。需要注意的是,同步類是在API級別棄用21:see details on CookieSyncManager class