ปัญหาคุกกี้ Android WebView


89

ฉันมีเซิร์ฟเวอร์ที่ส่งคุกกี้เซสชันสำหรับแอนดรอยด์เพื่อใช้ในการสื่อสารที่ได้รับการรับรองความถูกต้อง ฉันกำลังพยายามโหลด WebView โดยมี URL ที่ชี้ไปที่เซิร์ฟเวอร์เดียวกันนั้นและฉันกำลังพยายามส่งผ่านคุกกี้เซสชันเพื่อการตรวจสอบสิทธิ์ ฉันสังเกตว่ามันทำงานเป็นระยะ ๆ แต่ฉันไม่รู้ว่าทำไม ฉันใช้คุกกี้เซสชันเดียวกันเพื่อทำการโทรอื่น ๆ บนเซิร์ฟเวอร์ของฉันและสิ่งเหล่านี้จะไม่ล้มเหลวในการตรวจสอบสิทธิ์ ฉันสังเกตเห็นปัญหานี้เมื่อพยายามโหลด URL ใน WebView เท่านั้นและจะไม่เกิดขึ้นทุกครั้ง น่าผิดหวังมาก

ด้านล่างนี้คือโค้ดที่ใช้ทำ ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก

String myUrl = ""http://mydomain.com/"; 
CookieSyncManager.createInstance(this); 
CookieManager cookieManager = CookieManager.getInstance(); 
Cookie sessionCookie =  getCookie(); 
if(sessionCookie != null){ 
    String cookieString = sessionCookie.getName() +"="+sessionCookie.getValue()+"; domain="+sessionCookie.getDomain(); 
    cookieManager.setCookie(myUrl, cookieString); 
    CookieSyncManager.getInstance().sync(); 
} 

WebView webView = (WebView) findViewById(R.id.webview); 
webView.getSettings().setBuiltInZoomControls(true); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.setWebViewClient(new MyWebViewClient()); 
webView.loadUrl(myUrl);

อ้างอิงคำถามนี้stackoverflow.com/questions/2566485/…
neeraj t

คำตอบ:


55

ขอบคุณjustingrammens ! นั่นได้ผลสำหรับฉันฉันจัดการเพื่อแบ่งปันคุกกี้ภายในคำขอ DefaultHttpClient และกิจกรรม WebView ของฉัน:

//------- Native request activity
private DefaultHttpClient httpClient;
public static Cookie cookie = null;

//After Login
List<Cookie> cookies = httpClient.getCookieStore().getCookies();
for (int i = 0; i < cookies.size(); i++) {
    cookie = cookies.get(i);
}

//------- Web Browser activity
Cookie sessionCookie = myapp.cookie;
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
if (sessionCookie != null) {
    cookieManager.removeSessionCookie();
    String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
    cookieManager.setCookie(myapp.domain, cookieString);
    CookieSyncManager.getInstance().sync();
}   

สิ่งนี้ได้ผลดีสำหรับฉัน ดังนั้นฉันจึงสร้าง URL ของคุกกี้: String url = (cookie.isSecure ()? "https": "http") + ": //" + cookie.getDomain () + cookie.getPath ();
Heath Borders

ขอบคุณสำหรับโพสต์ ... มันช่วยฉันในการใช้งานการออกจากระบบ Twitter สำหรับแอพของฉัน ... ;)
rahul

บอกได้
ไหม

คีย์เวิร์ดคือ: String cookieString = sessionCookie.getName () + "=" + sessionCookie.getValue () + "; domain =" + sessionCookie.getDomain (); cookieManager.setCookie (myapp.domain, cookieString);
Zennichimaro

1
CookieSyncManager เลิกใช้งานแล้ว :(
Misha Akopov

18

ขอบคุณ Android ที่ทำลายวันอาทิตย์ของฉัน . . นี่คือสิ่งที่แก้ไขแอปของฉัน (หลังจากที่คุณเริ่มการดูเว็บ)

if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ) {

  CookieManager cookieManager = CookieManager.getInstance();

  cookieManager.setAcceptThirdPartyCookies( webView, true );

}

ฉันควรจะบอกว่าคำตอบข้างต้นอาจใช้ได้ แต่ในสถานการณ์ของฉันในขณะที่ Android ใช้ v5 + 'แอป' javascript javascript บนเว็บสำหรับ Android ของฉันเสียชีวิต


1
โอ้! คุณเพิ่งช่วยวันของฉัน!
Le Minh

14

โซลูชัน: Webview CookieSyncManager

CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie("http://xx.example.com","mid="+MySession.GetSession().sessionId+" ; Domain=.example.com");
cookieSyncManager.sync();

String cookie = cookieManager.getCookie("http://xx.example.com");

Log.d(LOGTAG, "cookie ------>"+cookie);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new TuWebViewClient());
mWebView.loadUrl("http://xx.example.com");

คุณได้cookieอะไรจากอะไรฉันได้แค่: PHPSESSID=ljfakdjfklasdfaj!, เพียงพอหรือไม่?
Francisco Corrales Morales

6
MySession คืออะไรที่นี่?
User3


3

ฉันจะบันทึกคุกกี้เซสชั่นนั้นเป็นค่ากำหนดและเปิดตัวจัดการคุกกี้ใหม่อย่างจริงจัง ดูเหมือนว่าคุกกี้เซสชันจะไม่รอดจากการรีสตาร์ทกิจกรรม


ฉันควรเพิ่มว่าแอปของฉันทำให้การเรียกใช้อื่น ๆ ที่ไม่ใช่ WebView บนเซิร์ฟเวอร์ของฉันไม่ล้มเหลวในการตรวจสอบสิทธิ์ เมื่อฉันพยายามโหลด URL ใน WebView เท่านั้นที่ฉันสังเกตเห็นปัญหานี้ "คุกกี้ sessionCookie = getCookie ();" กำลังดึงข้อมูลจากฐานข้อมูลของแอปซึ่งเป็นคุกกี้เซสชันที่ฉันใช้สำหรับข้อความทั้งหมดกับเซิร์ฟเวอร์ของฉัน
nannerpus

ถ้าคุณใช้ HttpClient เพราะมันมีที่เก็บคุกกี้เป็นของตัวเองดังนั้นหากคุณถืออินสแตนซ์เดียวของไคลเอนต์คุกกี้ของคุณจะอยู่รอด แต่มันอาจไม่มีอะไรเกี่ยวข้องกับมุมมองเว็บของคุณ
Bostone

ถ้าฉันเข้าใจคุณถูกต้องแสดงว่าคุณกำลังบอกว่า CookieManager ส่งคืนโดย CookieManager.getInstance (); จะส่งผลต่อคุกกี้ที่ใช้โดยอินสแตนซ์ของ HttpClient ซึ่ง WebView ไม่ได้ใช้ หากเป็นเช่นนั้นจริงคุณรู้หรือไม่ว่าฉันจะส่งคุกกี้ไปยัง WebViews อย่างชัดเจนได้อย่างไร นอกจากนี้เมื่อดูที่เอกสาร CookieManager อาจไม่เรียก "cookieManager.setAcceptCookie (true)" ทำให้ฉันมีปัญหา ขอบคุณสำหรับความช่วยเหลือขอบคุณจริงๆ
nannerpus

3

ฉันใช้เวลากว่าครึ่งของ 3 ชั่วโมงในการทำงานกับปัญหาที่คล้ายกันมาก ในกรณีของฉันฉันมีการโทรหลายครั้งฉันโทรไปยังบริการเว็บโดยใช้ a DefaulHttpClientแล้วฉันต้องการตั้งค่าเซสชันและคุกกี้อื่น ๆ ที่เกี่ยวข้องทั้งหมดในWebViewไฟล์.

ฉันไม่รู้ว่าวิธีนี้จะช่วยแก้ปัญหาของคุณได้หรือไม่เพราะฉันไม่รู้ว่าgetCookie()วิธีของคุณทำอย่างไร แต่ในกรณีของฉันฉันต้องโทรไปจริงๆ

cookieManager.removeSessionCookie();

ก่อนอื่นให้ลบคุกกี้เซสชันแล้วเพิ่มใหม่ ฉันพบว่าเมื่อฉันพยายามตั้งค่าJSESSIONIDคุกกี้โดยไม่ได้ลบออกก่อนค่าที่ฉันต้องการตั้งให้ไม่ถูกบันทึก ไม่แน่ใจว่าสิ่งนี้จะช่วยคุณได้หรือไม่ แต่คิดว่าจะแบ่งปันสิ่งที่พบ


ทำไมไม่CookieManager.getInstance().removeAllCookie ();?
Francisco Corrales Morales

2

หลังจากค้นคว้ามาระยะหนึ่งฉันได้รวบรวมชิ้นส่วนที่ทำให้ฉันได้รับโซลูชันนี้ เมื่อเลิกใช้งาน CookieSyncManager แล้วนี่อาจเป็นวิธีที่ดีที่สุดในการตั้งค่าคุกกี้เฉพาะสำหรับ Webview ใน Kotlin ในปัจจุบันคุณไม่ควรต้องการสิ่งอื่นใด

private fun setCookie(){
    val webView = WebView(this) // this = context
    val cookieManager = CookieManager.getInstance()
    cookieManager.acceptCookie()

    val domain = "https://www.yourdomain.com/"

    webView.webViewClient = WebViewClient()
    webView.settings.javaScriptEnabled = true

    cookieManager.setCookie(domain,"$cookieKey=$cookieValue")
    cookieManager.setAcceptThirdPartyCookies(webView, true)

    webView.loadUrl(domain)
}

1

ฉันมีวิธีการที่แตกต่างจากคนอื่น ๆ ที่นี่และเป็นแนวทางที่รับประกันว่าจะทำงานได้โดยไม่ต้องเกี่ยวข้องกับ CookieSyncManager (ซึ่งคุณอยู่ในความหมายของความหมายเช่น "โปรดทราบว่าแม้การซิงค์ () จะเกิดขึ้นแบบอะซิงโครนัส")

โดยพื้นฐานแล้วเราเรียกดูโดเมนที่ถูกต้องจากนั้นเราเรียกใช้งานจาวาสคริปต์จากบริบทของเพจเพื่อตั้งค่าคุกกี้สำหรับโดเมนนั้น (เช่นเดียวกับที่เพจนั้น ๆ ) ข้อเสียสองประการของวิธีนี้คืออาจทำให้มีเวลาเดินทางไป - กลับเพิ่มเติมเนื่องจากคำขอ http พิเศษที่คุณต้องทำ และหากไซต์ของคุณไม่มีหน้าที่เทียบเท่ากับหน้าว่างเว็บไซต์อาจกะพริบ URL ใดก็ได้ที่คุณโหลดเป็นอันดับแรกก่อนที่จะนำคุณไปยังตำแหน่งที่ถูกต้อง

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.http.cookie.Cookie;
import android.annotation.SuppressLint;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewFragment {
    private static final String BLANK_PAGE = "/blank.html"

    private CookieSyncManager mSyncManager;
    private CookieManager mCookieManager;

    private String mTargetUrl;
    private boolean mInitializedCookies;
    private List<Cookie> mAllCookies;

    public WebViewFragment(Context ctx) {
        // We are still required to create an instance of Cookie/SyncManager.
        mSyncManager = CookieSyncManager.createInstance(ctx);
        mCookieManager = CookieManager.getInstance();
    }

    @SuppressLint("SetJavaScriptEnabled") public void loadWebView(
                String url, List<Cookie> cookies, String domain) {
        final WebView webView = ...

        webView.setWebViewClient(new CookeWebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);

        mInitializedCookies = false;
        mTargetUrl = url;
        mAllCookies = cookies;
        // This is where the hack starts.
        // Instead of loading the url, we load a blank page.
        webView.loadUrl("http://" + domain + BLANK_PAGE);
    }

    public static String buildCookieString(final Cookie cookie) {
        // You may want to add the secure flag for https:
        // + "; secure"
        // In case you wish to convert session cookies to have an expiration:
        // + "; expires=Thu, 01-Jan-2037 00:00:10 GMT"
        // Note that you cannot set the HttpOnly flag as we are using
        // javascript to set the cookies.
        return cookie.getName() + "=" + cookie.getValue()
                    + "; path=" + cookie.getPath()
                    + "; domain=" + cookie.getDomain()
    };

    public synchronized String generateCookieJavascript() {
        StringBuilder javascriptCode = new StringBuilder();
        javascriptCode.append("javascript:(function(){");
        for (final Cookie cookie : mAllCookies) {
            String cookieString = buildCookieString(cookie);
            javascriptCode.append("document.cookie=\"");
            javascriptCode.append(
                     StringEscapeUtils.escapeJavascriptString(cookieString));
            javascriptCode.append("\";");
        }
        // We use javascript to load the next url because we do not
        // receive an onPageFinished event when this code finishes.
        javascriptCode.append("document.location=\"");
        javascriptCode.append(
                StringEscapeUtils.escapeJavascriptString(mTargetUrl));
        javascriptCode.append("\";})();");
        return javascriptCode.toString();
    }

    private class CookieWebViewClient extends WebViewClient {
        @Override public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (!mInitializedCookies) {
                mInitializedCookies = true;
                // Run our javascript code now that the temp page is loaded.
                view.loadUrl(generateCookieJavascript());
                return;
            }
        }
    }
}

หากคุณเชื่อถือโดเมนที่คุกกี้มาจากคุณอาจสามารถออกไปได้โดยไม่ต้องใช้คอมมอน apache แต่คุณต้องเข้าใจว่าสิ่งนี้อาจทำให้เกิดความเสี่ยง XSS หากคุณไม่ระวัง


1

นี่เป็นรหัสที่ใช้งานได้

    private void setCookie(DefaultHttpClient httpClient, String url) {
    List<Cookie> cookies = httpClient.getCookieStore().getCookies();
    if (cookies != null) {
        CookieSyncManager.createInstance(context);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);

        for (int i = 0; i < cookies.size(); i++) {
            Cookie cookie = cookies.get(i);
            String cookieString = cookie.getName() + "=" + cookie.getValue();
            cookieManager.setCookie(url, cookieString);
        }
        CookieSyncManager.getInstance().sync();
    }
}

ที่นี่ httpclient คืออ็อบเจ็กต์ DefaultHttpClient ที่คุณใช้ในคำขอ HttpGet / HttpPost สิ่งหนึ่งที่ต้องตรวจสอบให้แน่ใจคือชื่อคุกกี้และค่าที่ควรได้รับ

String cookieString = cookie.getName() + "=" + cookie.getValue();

setCookie จะตั้งค่าคุกกี้สำหรับ URL ที่กำหนด


หมายเหตุ: คุณไม่สามารถจัดเก็บคุกกี้เซสชันโดยใช้ CookieManager.setCookie
John Doe

ฉันไม่เข้าใจ ... คุณอธิบายได้ไหม
droid kid

1

ฉันแก้ไขปัญหาคุกกี้ทั้งหมดของฉันอย่างน่าอัศจรรย์ด้วยบรรทัดเดียวใน onCreate:

CookieHandler.setDefault(new CookieManager());

แก้ไข: วันนี้หยุดทำงาน :( อึ๊บ ๆ หุ่นยนต์


ดังนั้นการปรับปรุงใด ๆ ทำไมมันถึงหยุดทำงานคุณแก้มันหรือยัง
Francisco Corrales Morales

1

เจอสิ่งนี้เช่นกัน นี่คือสิ่งที่ฉันทำ

ใน LoginActivity ของฉันภายใน AsyncTask ของฉันฉันมีสิ่งต่อไปนี้:

CookieStoreHelper.cookieStore = new BasicCookieStore();
BasicHttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, CookieStoreHelper.cookieStore);

HttpResponse postResponse = client.execute(httpPost,localContext);
CookieStoreHelper.sessionCookie = CookieStoreHelper.cookieStore.getCookies();

// WHERE CookieStoreHelper.sessionCookie เป็นคลาสอื่นที่มีตัวแปร sessionCookie ที่กำหนดเป็นคุกกี้รายการ และ cookieStore กำหนดเป็น BasicCookieStore cookieStore;

จากนั้นบน Fragment ของฉันซึ่ง WebView ของฉันอยู่ฉันมีสิ่งต่อไปนี้:

//DECLARE LIST OF COOKIE
List<Cookie> sessionCookie;

ภายในวิธีการของฉันหรือก่อนที่คุณจะตั้งค่า WebViewClient ()

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

sessionCookie = CookieStoreHelper.cookieStore.getCookies();
CookieSyncManager.createInstance(webView.getContext());
CookieSyncManager.getInstance().startSync();
CookieManager cookieManager = CookieManager.getInstance();
CookieManager.getInstance().setAcceptCookie(true);
if (sessionCookie != null) {
   for(Cookie c:  sessionCookie){
      cookieManager.setCookie(CookieStoreHelper.DOMAIN, c.getName() + "=" + c.getValue());
   }
   CookieSyncManager.getInstance().sync();

 }

 webView.setWebViewClient(new WebViewClient() {
    //AND SO ON, YOUR CODE
 }

เคล็ดลับด่วน: ติดตั้ง firebug บน firefox หรือใช้ Developer Console บน chrome แล้วทดสอบหน้าเว็บก่อนจับ Cookie และตรวจสอบโดเมนเพื่อให้คุณเก็บไว้ที่ใดที่หนึ่งและตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าโดเมนที่ถูกต้อง

แก้ไข: แก้ไข CookieStoreHelper.cookies เป็น CookieStoreHelper.sessionCookie


1

รหัสการทำงานของฉัน

public View onCreateView(...){
    mWebView = (WebView) view.findViewById(R.id.webview);

    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

        ...
        ...
        ...

    CookieSyncManager.createInstance(mWebView.getContext());
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    //cookieManager.removeSessionCookie(); // remove
    cookieManager.removeAllCookie(); //remove
    // Recommended "hack" with a delay between the removal and the installation of "Cookies"
    SystemClock.sleep(1000);

    cookieManager.setCookie("https://my.app.site.com/", "cookiename=" + value + "; path=/registration" + "; secure"); // ;
    CookieSyncManager.getInstance().sync();

    mWebView.loadUrl(sp.getString("url", "") + end_url);

    return view;
}

หากต้องการแก้ไขข้อบกพร่องของข้อความค้นหา "cookieManager.setCookie (.... );" ฉันแนะนำให้คุณดูเนื้อหาของฐานข้อมูล webviewCookiesChromium.db (เก็บไว้ใน "/data/data/my.app.webview/database") ที่นั่นคุณจะเห็นการตั้งค่าที่ถูกต้อง

ปิดการใช้งาน "cookieManager.removeSessionCookie ();" และ / หรือ "cookieManager.removeAllCookie ();"

//cookieManager.removeSessionCookie();
// and/or
//cookieManager.removeAllCookie();"

เปรียบเทียบค่าที่ตั้งไว้กับค่าที่เบราว์เซอร์กำหนด ปรับคำขอสำหรับการติดตั้งคุกกี้ก่อนจนกว่าจะไม่มีการติดตั้งเบราว์เซอร์ "แฟล็ก" จะเหมาะสมกับสิ่งที่คุณตัดสินใจ ฉันพบว่าข้อความค้นหาอาจเป็น "แฟล็ก":

// You may want to add the secure flag for https:
+ "; secure"
// In case you wish to convert session cookies to have an expiration:
+ "; expires=Thu, 01-Jan-2037 00:00:10 GMT"
// These flags I found in the database:
+ "; path=/registration"
+ "; domain=my.app.site.com"

ฉันใช้รหัสด้านบนสำหรับเก็บคุกกี้ในการดูเว็บ แต่โปรดแจ้งให้เราทราบเกี่ยวกับเส้นทาง เส้นทางที่นี่คืออะไร?
Mehul Tank

@MehulTank พารามิเตอร์พา ธ ระบุตำแหน่งเอกสาร คุกกี้จะถูกส่งไปยังเซิร์ฟเวอร์ก็ต่อเมื่อเส้นทางตรงกับตำแหน่งปัจจุบันหรือตำแหน่งเอกสารหลัก
Roland van der Linden

1

ความคิดเห็นสองสามข้อ (อย่างน้อยสำหรับ API> = 21) ซึ่งฉันพบจากประสบการณ์ของฉันและทำให้ฉันปวดหัว:

  1. httpและhttpsURL แตกต่างกัน การตั้งค่าคุกกี้http://www.example.comแตกต่างจากการตั้งค่าคุกกี้https://www.example.com
  2. เครื่องหมายทับในส่วนท้ายของ url สามารถสร้างความแตกต่างได้เช่นกัน ในกรณีของฉันใช้https://www.example.com/งานได้ แต่https://www.example.comไม่ได้ผล
  3. CookieManager.getInstance().setCookieกำลังดำเนินการแบบอะซิงโครนัส ดังนั้นหากคุณโหลด url ทันทีหลังจากที่คุณตั้งค่าแล้วจะไม่รับประกันว่าคุกกี้จะถูกเขียนไปแล้ว เพื่อป้องกันพฤติกรรมที่ไม่คาดคิดและไม่เสถียรให้ใช้ CookieManager # setCookie (String url, String value, ValueCallback callback) ( ลิงค์ ) และเริ่มโหลด url หลังจากเรียกกลับ

ฉันหวังว่าสองเซ็นต์ของฉันจะช่วยประหยัดเวลาจากบางคนเพื่อที่คุณจะได้ไม่ต้องเผชิญกับปัญหาเดียวกันกับฉัน


การตั้งค่าคุกกี้สำหรับexample.comแตกต่างจากการตั้งค่าคุกกี้สำหรับexample.comอย่างไร
softmarshmallow

0

ฉันประสบปัญหาเดียวกันและจะแก้ไขปัญหานี้ใน Android ทุกรุ่น

private void setCookie() {
    try {
        CookieSyncManager.createInstance(context);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            cookieManager.setCookie(Constant.BASE_URL, getCookie(), value -> {
                String cookie = cookieManager.getCookie(Constant.BASE_URL);
                CookieManager.getInstance().flush();
                CustomLog.d("cookie", "cookie ------>" + cookie);
                setupWebView();
            });
        } else {
            cookieManager.setCookie(webUrl, getCookie());
            new Handler().postDelayed(this::setupWebView, 700);
            CookieSyncManager.getInstance().sync();
        }

    } catch (Exception e) {
        CustomLog.e(e);
    }
}

0

โปรดทราบว่าอาจใช้โดเมนย่อยแทน URL ปกติได้ดีกว่า ดังนั้นการตั้งค่าแทน.example.comhttps://example.com/

ขอบคุณ Jody Jacobus Geers และคนอื่น ๆ ที่ฉันเขียน:

if (savedInstanceState == null) {
    val cookieManager = CookieManager.getInstance()
    cookieManager.acceptCookie()
    val domain = ".example.com"
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        cookieManager.setCookie(domain, "token=$token") {
            view.webView.loadUrl(url)
        }
        cookieManager.setAcceptThirdPartyCookies(view.webView, true)
    } else {
        cookieManager.setCookie(domain, "token=$token")
        view.webView.loadUrl(url)
    }
} else {
    // Check whether we're recreating a previously destroyed instance.
    view.webView.restoreState(savedInstanceState)
}

-4

อย่าใช้ URL ดิบของคุณ

แทน:

cookieManager.setCookie(myUrl, cookieString); 

ใช้แบบนี้:

cookieManager.setCookie("your url host", cookieString); 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.