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_uri
sem 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 code
e state
do 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()
code
state
getLoginUrl()
Simplesmente consertou o bug desativando o cache. #phew
Laravel Facebook é um pacote que criei para praticar com o Laravel e usar em projetos.