2

我从我的服务器收到带有本机 google+ 登录 oauth2 令牌的响应,并且我正在设置 cookie:

String cookieSessionString = "JSESSIONID" + "=" + i.getStringExtra("C_session_id");
    String cookieEmailString = "useremail" + "=" + i.getStringExtra("C_user_email");
    String cookieNameString = "username" + "=" + i.getStringExtra("C_user_name");
    String cookieUseridString = "userid" + "=" + i.getStringExtra("C_user_id");
    CookieManager cookieManager = CookieManager.getInstance();
    CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(webView.getContext());
    cookieManager.setCookie("mydomain.co", cookieSessionString);
    cookieManager.setCookie("mydomain.co", cookieEmailString);
    cookieManager.setCookie("mydomain.co", cookieNameString);
    cookieManager.setCookie("mydomain.co", cookieUseridString);
    cookieManager.setAcceptCookie(true);
    cookieSyncManager.getInstance().sync();

在 webview 我打电话:

       webView.getSettings().setAppCacheEnabled(true);
        WebViewDatabase.getInstance(this).clearHttpAuthUsernamePassword();
        webView.getSettings().setDatabaseEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webSettings.getCacheMode();
        webView.loadUrl(base_url);
webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                startActivity(new Intent(MainActivity.this, NoDataActivity.class).putExtra("Activity", "Main.class"));
                super.onReceivedError(view, errorCode, description, failingUrl);
            }
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                                   view.loadUrl(url);
                return true;
            }
            @Override
            public void onLoadResource( WebView view, String url ){
                CookieManager cookieManager = CookieManager.getInstance();
                cookie = cookieManager.getCookie(url);
                Log.d("ONloadResource","cookie is"+cookie);
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                CookieManager cookieManager = CookieManager.getInstance();
                cookieManager.setCookie(url, cookie);
                progressBar.setVisibility(View.GONE);
                progressBar.setProgress(100);
                if (url.contains("/ccavResponseHandler.jsp")) {
                    webView.loadUrl("javascript:window.HTMLOUT.processHTML ('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
                }
            }
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                progressBar.setVisibility(View.VISIBLE);
                progressBar.setProgress(5);
            }

           });

并且还尝试发送标头,例如:

 extraHeaders.put("JSESSIONID", i.getStringExtra("C_session_id"));
        extraHeaders.put("username", i.getStringExtra("C_user_name"));
        extraHeaders.put("useremail", i.getStringExtra("C_user_email"));
webView.loadUrl(url, extraHeaders);`

在 webview 登录中不起作用..!

任何人都可以帮我解决这个问题,我如何在我的域 URL 的 webview 中使用会话 ID 和用户电子邮件、ID 登录。

4

0 回答 0