Диалог Facebook Auth не отображается при просмотре приложения на вкладке страницы (iframe). Он отлично работает при просмотре внешнего приложения.Диалоговое окно Facebook не отображается на вкладке страницы
Мои настройки приложения Facebook являются:
Site URL: http://domain.com/test
Canvas URL: http://domain.com/test/
Secure Canvas URL: https://domain.com/test/
Page Tab URL: http://domain.com/test/
Secure Page Tab URL: https://domain.com/test/
Я добавил приложение к закладке страницы пу по ссылке: https://www.facebook.com/dialog/pagetab?app_id= [ MY_APP_ID] & next = https: //domain.com/test/
Я использую php sdk. И мой код в //domain.com/test/index.php выглядит следующим образом:
<?php
require 'facebook-php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => '[MY_APP_ID]',
'secret' => '[MY_APP_SECRET]',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Facebook test</title>
</head>
<body>
<p>
<?php if($user) : ?>
<a href="<?php echo $logoutUrl;?>">Logout</a>
<?php else: ?>
<a href="<?php echo $loginUrl;?>">Login</a>
<?php endif; ?>
</p>
</body>
</html>
Был бы признателен за любую помощь !!
Благодарности много для вашего решения! Прекрасный! – dannepanne
Упс, однако, не работает в Firefox. Появится диалог auth, но добавление «_blank» не будет правильно загружать страницу в Firefox. Также попробовали использовать JS SDK, но перезагрузив страницу с помощью window.location.reload() после авторизации, я даю мне «Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая будет повторять любое действие ...» - сообщение и надлежащая перезагрузка , – dannepanne
Facebook вызывает ваше приложение через POST при загрузке его в iframe, поэтому сообщение является нормальным. У вас есть *, чтобы перезагрузить страницу, когда пользователь разрешил ваше приложение? Если это так, то, возможно, просто добавьте фактическую метку времени (объект JS Date) в location.href, что делает ее «новым» источником вашего браузера. – CBroe