Implementing a PhoneGap app for Android and iOS, the app is using Facebook Connect and the PhoneGap Facebook Connect Plugin (https://github.com/davejohnson/phonegap-plugin-f
Ok, in the end I found out that the root cause of my problem was that Android and iOS facebook SDK's are handling the offline_access differently, in the value that they set in the 'expires' parameter in the session object.
In iOS, 'expires' will be set to a date far far in the future (4001-01-01), while in Android 'expires' will be set to 0. This made my comparison (expired < today) fail (I was doing a date parse to milliseconds), and the session was always 'invalid'.
(then in my case i was always doing a logout if the session was invalid, which made my token be invalid for real when trying it in the browser afterwards.. doh..)