facebook在跨域iframe中登录

时间:2014-01-08 11:57:43

标签: facebook iframe cookies login cross-domain

请注意以下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>

1 个答案:

答案 0 :(得分:0)

在发布问题之后,我在这里找到了关于问题(与Internet Explorer中的“第三方cookie”有关)的详细讨论:

Cookie blocked/not saved in IFRAME in Internet Explorer