Semyon Tikhonenko
Semyon Tikhonenko

Reputation: 4262

Android. OkHttp cookies are not saved after relaunching the app

I use the following code to setup cookies

PersistentCookieJar cookieJar = new PersistentCookieJar(
                new SetCookieCache(), new SharedPrefsCookiePersistor(context));
        clientBuilder.cookieJar(cookieJar);
        Retrofit retrofit = builder.client(
                clientBuilder.build()).build();

This is the header I received from server:

Set-Cookie: wordpress_logged_in_6041590398a33ab947560d559f09d479=capad%7C1488467742%7CSttfNHrOkwd67CteCGepJyv3bNU2SeSW0URepOPxCe5%7C5091b3bbcc334e520cec85c4c9b8e26a07a962d3c00c8c709b87f90018370f60; path=/; secure; httponly

Upvotes: 0

Views: 671

Answers (1)

Bryan Herbst
Bryan Herbst

Reputation: 67229

Your cookie (Set-Cookie: wordpress_logged_in_[etc]; path=/; secure; httponly) has no expiration set.

This makes it a "session" cookie, which should not be persisted. Your PersistentCookieJar likely follows the correct spec in not persisting any cookies without an expiration.

You can either manually add on an expiration when you receive this cookie (perhaps with an OkHttp interceptor), or create your own version of the PersistentCookieJar that persists all cookies (this is probably not a good idea).

Another option would be to respect the fact that whoever is sending that cookie wants it to be a session cookie.

Upvotes: 2

Related Questions