请注意以下3个文件。如果所有都在同一个域中,一切正常。但是,如果父文件位于不同的域上,那么facebook cookie似乎不会在两个子iframe之间传递。我需要它以这种方式工作......任何建议?
文件 zzzfbparent.html
<!DOCTYPE html>
<html>
<body>
<iframe src="<domain and directory>/zzzfb1.html" style="width:400px; height:200px;"></iframe>
</body>
</html>
文件 zzzfb1.html
<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<input type="button" value="Login" onClick="doLogin();"></input>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: 'XXXXXXXXXXXXXXXX',
status: false,
cookie: true,
xfbml: false
});
};
(function(){
if (document.getElementById('facebook-jssdk')) {return;}
var fjs = document.getElementsByTagName('script')[0];
var js = document.createElement('script');
js.id = 'facebook-jssdk';
js.src = '//connect.facebook.net/he_IL/all.js';
fjs.parentNode.insertBefore(js, fjs);
}());
function doLogin() {
FB.login(function(respLogin) {
location.replace('zzzfb2.php');
}, {scope: 'email'});
}
</script>
</body>
</html>
档案 zzzfb2.php
<?php
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
));
$user = $facebook->getUser();
?>
<!DOCTYPE html>
<html>
<body>
<?php echo '$user='.$user ?>
</body>
</html>
答案 0 :(得分:0)
在发布问题之后,我在这里找到了关于问题(与Internet Explorer中的“第三方cookie”有关)的详细讨论: