ProgramingTip

Android WebView가 쿠키 또는 비밀번호를 저장하지 않도록 설정

bestdevel 2020. 12. 3. 08:15
반응형

Android WebView가 쿠키 또는 비밀번호를 저장하지 않도록 설정


Twitter OAuth에 Android WebView를 사용합니다 . Twitter는 사용자에게 로그인하여 애플리케이션을 승인 요청하고 액세스 토큰을 검색하여 내 애플리케이션에 유지합니다.

사용자 암호를 지정 필요가없고 지정 필요도 없지만 WebView는 Twitter의 쿠키를 보관하며 사용자에게 암호를 기억할 묻습니다. 그 결과 트위터 계정 페이지를 통해 애플리케이션의 승인을 취소하고 내 애플리케이션이 액세스 토큰을 삭제 한 후에도 다음에 WebView를 열면 여전히 로그인 할 가능성이 있습니다. 암호 상자가 이미 채워져 있습니다.

WebView가 암호를 기억하도록 요청하지 않고 세션을 유지하지 않고해야 할 필요가 있습니까? 가능하지 않은 경우 아카이브 상태를 모두 게재 할 수 있습니까? (이미지 캐시 제외)?


이를 사용하여 쿠키가 저장되는 것을 방지하고 이미 쿠키를 정리할 수 있습니다.

CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookies(callback);
cookieManager.setAcceptCookie(false);

WebView webview = new WebView(this);
WebSettings ws = webview.getSettings();
ws.setSaveFormData(false);
ws.setSavePassword(false); // Not needed for API level 18 or greater (deprecated)

비밀번호를 저장하지 않는 경우 :

WebView webview = new WebView(this);
WebSettings mWebSettings = webview.getSettings();
mWebSettings.setSavePassword(false);
mWebSettings.setSaveFormData(false);

쿠키의 경우 :

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);

쿠키 구현에 대해 잘 모르겠습니다.


한 줄에 시도하십시오. webview를 사용하여 작성해야합니다.

android.webkit.CookieManager.getInstance().removeAllCookie();

이 맥락에서 본 최고의 답변입니다.

    webView.clearCache(true);
    webView.clearHistory();
    WebSettings webSettings = webView.getSettings();
    webSettings.setSaveFormData(false);
    webSettings.setSavePassword(false); // Not needed for API level 18 or greater (deprecated)

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        CookieManager.getInstance().removeAllCookies(null);
        CookieManager.getInstance().flush();
    } else {
        CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(this);
        cookieSyncMngr.startSync();
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeAllCookie();
        cookieManager.removeSessionCookie();
        cookieSyncMngr.stopSync();
        cookieSyncMngr.sync();
    }

쿠키를 지우지 쿠키 라이브러리 페이스 북 등의 다른 방법을 세션에 영향을 미치게됩니다.

웹뷰 생성 전과 같은 oauth 트랜잭션 전

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);

oauth 트랜잭션 후 설정하여 쿠키 허용 허용

cookieManager.setAcceptCookie(true);

나는 그것을 테스트했다 작동합니다 ..


다음 솔루션을 사용했습니다.

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);

다음 방법은 나를 위해 작동하지 않습니다.

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

가능한 이유는 다음과 같이 쿠키를 동기화하지 않았기 때문일 수 있습니다.

CookieSyncManager.createInstance(getContext()).sync();

그러나 시간이 걸릴 수 있습니다.

WebView암호를 기억하지 않도록 강제 하는 것도 작동하지 않습니다.

또한 사용성에도 좋지 않습니다.

참고 URL : https://stackoverflow.com/questions/5404274/make-android-webview-not-store-cookies-or-passwords

반응형