Facebook身份验证对话框未显示在页面选项卡中

时间:2012-05-31 13:48:52

标签: facebook facebook-php-sdk facebook-apps facebook-authentication

在页面标签(iframe)中查看应用时,Facebook Auth对话框不会显示。 它在外部查看应用程序时工作正常。

我的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]&安培;下一= 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>

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:2)

您无法在iframe中使用身份验证对话框(为什么?请参阅此处:http://facebook.stackoverflow.com/a/10831018/1427878)。 将target =“_ blank”添加到您的链接,它应该工作。 或者只是嵌入JavaScript SDK&amp;使用FB.login,如果你想要一个没有额外费用的Popup。

答案 1 :(得分:2)

尝试创建一个更改iframe父URL的JS函数

function RedirectTo(installURL){
     window.top.location.href = installURL;
}

并在登录文本的onClick事件上调用该函数

<?php else: ?>
   <a href="#" onclick='RedirectTo("<?php echo $loginUrl;?>")'>Login</a>
<?php endif; ?>

确保$ loginUrl var的RedirectURI是您应用的网址

然后你必须在你的Facebook应用程序(https://developers.facebook.com/apps)上改变这些设置

应用域名:facebook.com

Facebook登录网站:您的Facebook应用网址 (即:https://www.facebook.com/ {FanPageUsername} ?sk = app_ {appID}