在页面选项卡(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] &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>
将不胜感激任何帮助!!
2 回答
你不能在iframe中使用auth对话框(为什么?见这里:http://facebook.stackoverflow.com/a/10831018/1427878) . 将target = "_blank"添加到您的链接,它应该工作 . 或者只是嵌入JavaScript SDK并使用FB.login,如果你想要一个没有进一步费用的Popup .
尝试创建一个更改iframe父URL的JS函数
并在Login文本的onClick事件上调用该函数
确保$ loginUrl var的RedirectURI是您的应用的URL
然后你将不得不在你的Facebook应用程序(https://developers.facebook.com/apps)上改变这些设置
App Domains: facebook.com
Website with Facebook Login: 您的Facebook应用程序URL(即:https://www.facebook.com/ ?sk = app_ )