Как получить срок действия / постоянство из файлов cookie WebKit Cookiemanager?

#android #cookies #webkit

#Android #файлы cookie #webkit

Вопрос:

Я считываю файлы cookie аутентификации из WebView и повторно использую их в своих собственных подключениях для аутентификации. Это работает нормально, если я предполагаю, что все файлы cookie являются постоянными. Однако система, к которой я подключаюсь, различает постоянные («держите меня в системе») и сеансовые файлы cookie, и, похоже, я не могу получить эту информацию обратно из WebKit CookieManager.

Я создал небольшой пример приложения, который иллюстрирует проблему: https://github.com/Paul-JanPauptit/WebViewPersistentCookies

Моя настройка WebView:

 private void initializeDialog() {
    // Clear cookies (callback not handled in this test implementation)
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeAllCookies(null);

    WebView webView = new WebView(getContext());

    webView.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT));
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
        {
            CookieManager cookieManager = CookieManager.getInstance();
            String cookiesString = cookieManager.getCookie(_url);

            if (cookiesString != null)
                Log.d(TAG, String.format("%s:n%s", request.getUrl().toString(), cookiesString));

            return false;
        }
    });

    WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    settings.setBuiltInZoomControls(true);
    setContentView(webView);

    webView.loadUrl(_url);
}
 

Ответ скрипача:
Файл cookie в ответ содержит дату истечения срока действия

(обратите внимание, что это содержит дату истечения срока действия, через 5 дней)

Однако получение строки cookie из WebKit CookieManager:

FedAuth=77u/PD9[Redacted, same string as in Fiddler] 1nPT08L1NQPg==;

(обратите внимание, что это не содержит битов даты истечения срока действия)

При разборе на отдельные файлы cookie они в конечном итоге сохраняются = false, поэтому я не знаю, какие файлы cookie сохраняются в сеансах приложений.

Это ожидаемое поведение? Есть ли другой способ получить файлы cookie из WebKit без удаления даты истечения срока действия?