Problema do Facebook: o aplicativo vai para o domínio original
-
25-09-2019 - |
Pergunta
Estou criando um aplicativo no Facebook com PHP e enfrentando dois problemas principais.
Quando clico em permitir a permissão, o aplicativo me leva ao meu próprio domínio (onde o aplicativo é armazenado) em vez de carregá -lo em um iframe.
Às vezes, quando clico em "Não permitir", ainda me deixa entrar e mostra um erro de PHP, enquanto às vezes (na maioria das vezes), isso não me permite entrar.
Qual poderia ser o problema? De alguma maneira, posso redirecionar programaticamente para a página de permissões? Obrigada..
if(empty ($this->session))
{
try
{
$login_url = $this->facebook->getLoginUrl();
header("Location: ".$login_url);
}
catch(Exception $e)
{
header("Location: http://www.facebook.com");
}
}
else
{
try
{
$this->uid = $this->facebook->getUser();
}
catch(Exception $e)
{
header("Location: http://www.facebook.com");
}
}
Observe que os redirecionamentos que fiz foram tentar resolver o problema. Mas nenhuma exceção é lançada.
Solução 2
Eu usei este script simples para aplicar redirecionar se a página não estiver dentro do iframe ...
if(parent == window)
{
window.location = "http://apps.facebook.com/appname/";
}
Isso pode não ser uma solução legal, mas resolveu a situação para mim. Qualquer um se conhece da maneira legal, por favor poste. Obrigado.
Outras dicas
Quando você deseja obter o URL de login, pode passar parâmetros diferentes com base no que precisa. No seu caso, para voltar ao URL da página do Facebook, você pode usar o next
param.
Este é o seu código modificado:
$login_url = $this->facebook->getLoginUrl(
array(
'canvas' => 1,
'fbconnect' => 0,
'next' => YOUR_CANVAS_PAGE_URL
)
);
if(empty ($this->session))
{
echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>";
exit;
}
else
{
try
{
$this->uid = $this->facebook->getUser();
}
catch(Exception $e)
{
echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>";
exit;
}
}
Deixe -me saber se ele resolve o seu problema :)