我在 SO 上找到了这个问题的一些答案,但我没有成功实施它们,所以希望有人可以检查我的代码并告诉我哪里出错了。
我已经验证我的 cookie 是从 DefaultHttpClient 设置的,并且正在使用 Log.d 将其写出来,如下面的代码片段所示。一切都在那里,只是没有为在此代码段底部调用的 WebView 设置。传递下来的 cookie 是我的 Asp.net mvc 项目中的会话 cookie。任何想法为什么当 WebView 访问网站时它没有让我保持登录状态?不要让 facebook 措辞让你失望,我都在工作,这个 cookie 用于我自己的服务器,它传递会话 cookie 以让我登录到自己的网站(基于我的 facebook 资料)。
Cookie sessionCookie = FacebookLoginService.cookie;
Log.d("intialwebview",sessionCookie.toString());
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
if (sessionCookie != null) {
cookieManager.removeSessionCookie();
String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
Log.d("intialwebview",cookieString);
cookieManager.setCookie(FacebookLoginService.cookie.getDomain(), cookieString);
CookieSyncManager.getInstance().sync();
}
//end cookie section
int userId = prefs.getInt(C.USER_ID, 0);
webView = (WebView) findViewById(R.id.web_view);
webView.getSettings().setUserAgentString(webView.getSettings().getUserAgentString() + "(Rambo)");
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.loadUrl(C.BaseUrl + "home/firstpage");
编辑: 我还尝试使用以下代码创建 Web 视图:
WebView webView = new WebView(this);
同样的结果。Cookie 未发送到 web 视图。