Проблема в Facebook: приложение отправляется в оригинальный домен

StackOverflow https://stackoverflow.com/questions/4601121

Вопрос

Я создаю приложение Facebook с PHP и сталкиваясь с двумя основными проблемами ..

  1. Когда я нажимаю разрешение на разрешение, приложение ведет меня в свой собственный домен (где хранится приложение) вместо загрузки его в iFrame.

  2. Иногда, когда я нажимаю «Не разрешаю», он все еще позволяет мне и отображать ошибку PHP, в то время как иногда (большую часть времени) она не позволяет мне.

В чем может быть проблема? Любой способ, которым я могу программически перенаправить на страницу разрешений? Спасибо..

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");
        }
    }

Обратите внимание на перенаправления, которые я сделал, должны были попытаться решить проблему. Но исключение не бросается.

Это было полезно?

Решение 2

Я использовал этот простой скрипт, чтобы применить перенаправить, если страница не внутри Iframe ...

if(parent == window)
                {
                    window.location = "http://apps.facebook.com/appname/";
                }

Это может быть не юридическое решение, но решило ситуацию для меня. Кто-нибудь, если знает юридический способ, пожалуйста, пост. Спасибо.

Другие советы

Когда вы хотите получить URL-адрес входа в систему, вы можете передать разные параметры на основе того, что вам нужно. В вашем случае вернуться в Facebook Page URL URL вы можете использовать next параметр

Это ваш код изменен:

$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;
    }
}

Дайте мне знать, если решает вашу проблему :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top