Android-приложение Facebook: Как долго действует cookie-файл FB webview (Логин webview)? - PullRequest
0 голосов
/ 24 февраля 2012

В настоящее время я разрабатываю приложение для Android с использованием официального Android FB SDK: поэтому все, от аутентификации / авторизации (SSO) до вызовов API, выполняется через Android FB SDK.

Но из соображений безопасности я делаюне хочу хранить мой access_token на телефоне.Теперь у меня есть небольшая проблема, связанная с cookie , хранящимся в веб-просмотре Facebook (при первом входе в систему).После выхода из приложения Android или после завершения процесса кажется, что даже если я не сохраню access_token на устройстве, я все равно получу доступ к приложению Android без предоставления учетных данных, так что это, вероятно, cookie.

Знаете ли вы, как долго действует cookie Facebook ?

спасибо ...

Ответы [ 2 ]

0 голосов
/ 23 сентября 2013

Вот реализация очистки куки самим Facebook.

    public static void clearFacebookCookies(Context context) {
        // setCookie acts differently when trying to expire cookies between builds of Android that are using
        // Chromium HTTP stack and those that are not. Using both of these domains to ensure it works on both.
        clearCookiesForDomain(context, "facebook.com");
        clearCookiesForDomain(context, ".facebook.com");
        clearCookiesForDomain(context, "https://facebook.com");
        clearCookiesForDomain(context, "https://.facebook.com");
    }



private static void clearCookiesForDomain(Context context, String domain) {
        // This is to work around a bug where CookieManager may fail to instantiate if CookieSyncManager
        // has never been created.
        CookieSyncManager syncManager = CookieSyncManager.createInstance(context);
        syncManager.sync();

        CookieManager cookieManager = CookieManager.getInstance();

        String cookies = cookieManager.getCookie(domain);
        if (cookies == null) {
            return;
        }

        String[] splitCookies = cookies.split(";");
        for (String cookie : splitCookies) {
            String[] cookieParts = cookie.split("=");
            if (cookieParts.length > 0) {
                String newCookie = cookieParts[0].trim() + "=;expires=Sat, 1 Jan 2000 00:00:01 UTC;";
                cookieManager.setCookie(domain, newCookie);
            }
        }
        cookieManager.removeExpiredCookie();
    }

Если у вас есть Facebook SDK, подключенный к вашему проекту как lib.просто вызовите Session.getActiveSession (). clearFacebookCookies (getApplicationContext ());

0 голосов
/ 26 марта 2012

Возможно, вы захотите вручную удалить файл cookie, когда закончите с ним.

CookieManager.getInstance().removeAllCookies();

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

http://developer.android.com/reference/android/webkit/CookieManager.html

...