Facebook – Erro: “Session key invalid or no longer valid”

Publicado: 16/08/2010 em exemplos
Tags:, , , , , ,

Desenvolvendo uma aplicação para o facebook, me deparei com o erro “Session key invalid or no longer valid” em alguns casos.
O erro acontece quando o usuário perde a sessão do facebook.

Abaixo tem 2 vídeos demonstrando o erro. É uma aplicação de teste em que a segunda tela irá mostrar o nome do usuário logado (eu) e a foto do profile. Nos 2 vídeos eu já estou logado no facebook.

O primeiro vídeo é mostrando que o exemplo funciona:

Este segundo vídeo é a reprodução do erro:

1. Faça login no facebook e acesse sua aplicação.
2. Abra uma nova janela do facebook e faça logout
3. Tente navegar na sua aplicação (onde ela faz chamadas a métodos do facebook)

Para realizar a correção, editei o método Application_Error do Global.asax da seguinte maneira:
protected void Application_Error(object sender, EventArgs e)
{
  //Recupera a exception
  Exception objErr = Server.GetLastError().InnerException;
  //Verifica se a exception é uma FacebookException
  if (objErr is Facebook.Utility.FacebookException)
  {
    HttpContext.Current.Server.ClearError();
    Response.Cookies.Clear();
    //Redireciona para a Home da Aplicação
    HttpContext.Current.Response.Redirect(
        System.Configuration.ConfigurationSettings.AppSettings["URL_APP"]);
  }
}

Não fiz um tratamento específico para o erro, mas a idéia é a mesma. A única diferença é que terá que verificar se a Exception Facebook.Utility.FacebookException foi lançada por causa do erro “Session key invalid or no longer valid”

Anúncios
comentários
  1. Daniel disse:

    Olá!! As vezes temos este erro no site: http://www.baixeumasemente.com.br
    Porém acontece o seguinte, quando vc está logado no Facebook e acessa o site, ele identificar o Cookie, porém, não foi gerado pelo site e assim dá o erro.

    Conseguimos trata-lo, mas o ideal seria não ocorrer o erro, ou pedir o login.
    Cheguei a ver que pode ser um bug da API.

    Tem alguma idéia?
    Obrigado!

    • ranieripieper disse:

      Pelo que pesquisei o erro tem alguma ligação com cookie e perda de sessão como demonstrado nos vídeos. Tanto é que a solução é limpar o cookie e mandar o usuário logar de novo.
      Os aplicativos que desenvolvi foram em .Net utilizando a api Facebook Developer Toolkit. Apesar de ter encontrado alguns bugs nela, creio que este erro não seja um bug da API. Vi o mesmo erro em aplicativos desenvolvidos em PHP.
      Pelos testes que fiz nos aplicativos, este erro ocorreu raramente. Tanto é que foi difícil descobrir como reproduzi-lo. A única solução encontrada foi a descrita no post. Como é um “erro” que ocorre raramente, a solução satisfaz.

  2. ravi disse:

    O que é o URL_APPS valor que deve ser dada ao longo aqui?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s