Проблема в Facebook: приложение отправляется в оригинальный домен
-
25-09-2019 - |
Вопрос
Я создаю приложение Facebook с PHP и сталкиваясь с двумя основными проблемами ..
Когда я нажимаю разрешение на разрешение, приложение ведет меня в свой собственный домен (где хранится приложение) вместо загрузки его в iFrame.
Иногда, когда я нажимаю «Не разрешаю», он все еще позволяет мне и отображать ошибку 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;
}
}
Дайте мне знать, если решает вашу проблему :)