У меня была точно такая же проблема при создании системы аутентификации для моего сайта. Как сказал Elad Lachmi, вы можете запускать FB.login при каждой загрузке страницы, но это вызовет быструю всплывающую вспышку (становится очень раздражающим).
Мое решение фактически привело к тому, что мне пришлось использовать offline_access. Похоже, что просто нет другого способа сохранить вход в систему, если он покидает ваш сайт в течение пары часов.
Вот (потенциальный) улов:
- Войти в систему через Facebook без доступа в автономном режиме.
- На каждой странице используйте jQuery, чтобы записать iframe в специально сформированный URL, который использует FB.getLoginStatus, и настроить его на обновление каждые 15 минут
Эта комбинация должна каждые 15 минут извлекать самый последний идентификатор сеанса пользователя из Facebook. Это приведет к его обновлению, когда он близок к истечению срока действия.
Обратите внимание, что я не пробовал это, и это может быть против Facebook ToS. Но это действительно единственное решение без использования offline_access, если вы хотите, чтобы пользователь входил в систему более 2 часов, не требуя от него обновления страницы.