繁体   English   中英

Android Webkit CookieManager:如何通过 CookieManager 获取所有 cookie?

[英]Android Webkit CookieManager: How to get all cookies via CookieManager?

我正在尝试通过CookieManager.getInstance().getCookie()m.facebook.com 的cookie 加载到android.webkit.WebView ,但它没有给出预期的结果

myWebView.loadUrl("http://m.facebook.com");

String cookies = CookieManager.getInstance().getCookie("m.facebook.com");

我想使用c_user字段来检查用户是否已登录,以便我可以重定向到自定义 URL。 在 Google Chrome 中查看http://m.facebook.com 的cookie 会显示许多字段,例如:

c_user datr fr dnonce m_pixel_ratio sb wd x-referer xs

带有 m.facebook.com cookie 的谷歌浏览器

但是getCookie()方法只返回dnonce

帮助将是appriciated。

** 场景是我想开发一个具有单个 Web 视图的 Android 应用程序。 当应用程序启动时,我想检查用户是否使用 Facebook 登录,如果是,则将其重定向到某个URL,否则打开 Facebook 登录页面。 为了检查用户成功登录,我想出了检查c_user (唯一用户 ID)cookie 的逻辑,但我无法通过getCookie方法获取它。

您可以使用此获取 cookie 值

getCookie("http://www.example.com","cookieName");

将函数声明为

public String getCookie(String siteName,String cookieName){     
    String CookieValue = null;

    CookieManager cookieManager = CookieManager.getInstance();
    String cookies = cookieManager.getCookie(siteName);       
    String[] temp=cookies.split(";");
    for (String ar1 : temp ){
        if(ar1.contains(cookieName)){
            String[] temp1=ar1.split("=");
            CookieValue = temp1[1];
            break;
        }
    }              
    return CookieValue; 
}

为所有 cookie 尝试这个类。 CookieManager 与 java.net

import java.net.CookieHandler;
    import java.net.CookieManager;
    import java.net.CookiePolicy;
    import java.net.HttpCookie;
    import java.util.List;

    private class MyCookieManager
    {       
        private CookieManager mCookieManager = null;

        MyCookieManager() {
            mCookieManager = new CookieManager();
            mCookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
            CookieHandler.setDefault(mCookieManager);
        }

        private List<HttpCookie> getCookies() {
            if(mCookieManager == null)
                return null;
            else
                return mCookieManager.getCookieStore().getCookies();
        }

        public void clearCookies() {
            if(mCookieManager != null)
                mCookieManager.getCookieStore().removeAll();
        } 

        public boolean isCookieManagerEmpty() {
            if(mCookieManager == null)
                return true;
            else 
                return mCookieManager.getCookieStore().getCookies().isEmpty();
        }


        public String getCookieValue() {
            String cookieValue = new String();

            if(!isCookieManagerEmpty()) {
                for (HttpCookie eachCookie : getCookies())
                    cookieValue = cookieValue + String.format("%s=%s; ", eachCookie.getName(), eachCookie.getValue());
            }

            return cookieValue;
        }

    }

您需要将确切的 url 传递给CookieManage getCookie方法。 您在WebView loadUrl方法中加载的 url。 例如:

webview.loadUrl("https://m.facebook.com");

然后当你调用获取cookie的方法时。

getCookie("https://m.facebook.com");

并导入正确的 CookieManager。

import android.webkit.CookieManager;

public String getCookie(String site) {
    CookieManager cookieManager = CookieManager.getInstance();
    String cookies = cookieManager.getCookie(site);
    return cookies;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM