Diego,
Você habilitou o offline_access na sua app? Se não, sua app interaje via Facebook normalmente mesmo depois de 2h de inatividade? Estou realmente curioso pra saber como você fez, porque meu problema não é login, mas sim postar no mural do usuário ao longo da sessão dele no meu site.
Imagine a seguinte situação: a sessão de login do usuário no fórum dura 1 dia; quando ele entra via Facebook, via API (JS + PHP), ele é logado e recebe um access_token que dura, em média de 1 a 2 horas; no entanto, após esse período de inatividade, ele resolve abrir uma nova discussão e postá-la no Facebook, mas não conseguirá, porque a OAuth vai lançar aquela exceção que mostrei anteriormente.
Em face disso, tenho duas alternativas: ou fazer com que o popup de login abra novamente no clique de um checkbox "Postar no meu mural" via JS pelo método FB.login() ou fazer isso internamente, pela SDK, não obstrusivamente e sem popups, que no caso acho muito mais conveniente e elegante.
A primeira solução eu tenho, mas é ruim, caso o usuários esteja em um dispositivo móvel com baixa interação com o JS, que geralmente quebra. Por isso a necessidade de fazer internamente. Eu poderia até diminuir o tempo de sessão para logins no Facebook, mas isso não compete a minha decisão, se é que me entende.