Pergunta

Estou criando um aplicativo no Facebook com PHP e enfrentando dois problemas principais.

  1. 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.

  2. À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.

Foi útil?

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 :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top