Android webview赢得';我不记得facebook登录了

Android webview赢得';我不记得facebook登录了,android,webview,facebook-like,Android,Webview,Facebook Like,在我的android应用程序中,用户可以喜欢我的facebook页面。因此,我使用一个webview加载一个包含类似facebook的框的网页。页面被很好地加载到webview中,然后发生以下情况: WebView使用类似facebook的框加载我的网页 通过点击Like按钮,用户被重定向到facebook登录页面 登录后,用户将再次重定向回我的自定义页面 但是当点击like按钮时,用户再次被重定向到facebook登录页面 所以我想,在登录之后,类似的事情是可能的。不知何故,webview似乎

在我的android应用程序中,用户可以喜欢我的facebook页面。因此,我使用一个webview加载一个包含类似facebook的框的网页。页面被很好地加载到webview中,然后发生以下情况:

  • WebView使用类似facebook的框加载我的网页
  • 通过点击Like按钮,用户被重定向到facebook登录页面
  • 登录后,用户将再次重定向回我的自定义页面
  • 但是当点击like按钮时,用户再次被重定向到facebook登录页面
  • 所以我想,在登录之后,类似的事情是可能的。不知何故,webview似乎不记得登录名。因此,我必须做些什么来修复这个

    以下屏幕截图序列显示了发生的情况:

    我想避免使用android的facebook sdk!尤其是这个程序在我的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");
    
        }
    
    编辑:我也尝试了以下方法来接受cookies,但都不起作用

    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...
    
    过度估计也不起作用

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

    您有这个错误,因为WebView不记得cookies。请阅读下面的问题:

    不确定您是否得到了问题的答案,但我尝试了与以下代码的组合,这对我很有效:

    @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>);
    ...
    }
    
    @覆盖
    创建时受保护的void(捆绑){
    super.onCreate(bundle);
    ...
    WebView WebView=新建WebView();
    WebSettings=webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setAppCacheEnabled(true);
    settings.setDomStorageEnabled(true);
    settings.setGeolocationEnabled(true);//最后一个可能是可选的
    setWebViewClient(新的WebViewClient());
    loadUrl();
    ...
    }
    

    然后,您需要为CookieSyncManager单例类调用相应的方法,如上面链接中所述。请注意,在API级别21中,sync类已被弃用:

    我尝试了线程中提供的所有“解决方案”,但一无所获。我更新了我的问题,显示了我的尝试。好的,有一个线程可以解决问题:[跳过facebook空白页][1][1]: