Facebook PHP SDK não lida com código / parâmetros de estado

16 de novembro de 2013

fundo

Estou tendo problemas com o Facebook esta semana. É esse tipo de bug que o deixa louco. Você não sabe se o problema está no código que você acha que funciona ou no pacote que você sabe que funciona. Eu criei uma biblioteca de wrapper para Facebook PHP SDK, chamada Laravel Facebook (anteriormente Laravel Social). Portanto, inicialmente pensei que tinha feito algo errado, então descartei meu projeto e, em seguida, usei o SDK completamente.

O problema

Depois de usar o SDK PHP do Facebook em meu projeto, outras pessoas não acharam confiável fazer login no site pelo Facebook. Tudo o que posso dizer é: “funciona para mim”. Sempre que eles tentam fazer o login, eles são redirecionados de volta para o redirect_urisem erros.

No início, pensei que poderia ser algum problema de sessão com o Facebook e Laravel. Mas tentando isolar ainda mais o problema, descobri que o sistema vinha recebendo parâmetros codee statedo Facebook. Efetuando login manualmente , isso é o que você usaria sem o SDK. No entanto, dado o exemplo simples do SDK, isso já deve ser tratado por ele.

A solução

Obrigado, phwd ! Eu tinha perdido cerca de meio dia pesquisando no Google por “redirecionamento de código / estado do Facebook”, que eu vaguei mentalmente para responder a uma pergunta aparentemente não relacionada . Surpreendentemente para mim, percebi que o SDK exigia que fosse chamado, pois estabelecerá um token CSRF para uso com os parâmetros e . Por outro lado, minha configuração de produção foi definida para armazenar em cache minha saída. Isso significava que nunca poderia ser chamado ao servir a saída em cache.getLoginUrl()codestategetLoginUrl()

Simplesmente consertou o bug desativando o cache. #phew


Laravel Facebook é um pacote que criei para praticar com o Laravel e usar em projetos.