从facebook登录弹出窗口回传给父母

时间:2012-08-10 07:08:00

标签: php facebook facebook-php-sdk popupwindow postmessage

我在Magento服务器上有一个产品页面。有一种情况是用户点击按钮并在该页面上显示加载器,如果他没有登录Facebook,则使用Facebook PHP-SDK打开弹出窗口,要求用户登录。负责PHP-SDK打开此登录弹出窗口托管在另一台服务器上,而不是Magento服务器上。一旦用户登录到Facebook,我需要一种与父页面通信的方式,以便我可以隐藏加载器。截至目前,一旦用户使用弹出窗口登录,弹出窗口将关闭,并且Magento服务器上的产品页面没有响应。因此,没有确认弹出窗口关闭。

我已经尝试过easyXDM和postmessage jquery插件,但是没有一个能够将弹出窗口的响应发送回父页面。它适用于在事件被触发的同一页面上请求响应的情况,即使是跨域也是如此。但是,如果打开弹出窗口,则无法正常工作。

我不确定这是否可以实现。但如果有办法,我会很乐意得到一些帮助。

1 个答案:

答案 0 :(得分:0)

Facebook SDK for PHP可以与Facebook SDK for Javascript结合使用,在应用程序的客户端和服务器端提供无缝的会话管理。

在现有代码中检查是否存在以下代码。如果没有添加并检查结果。

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId: '<?php echo $facebook->getAppID() ?>',
      cookie: true,
      xfbml: true,
      oauth: true
    });
    FB.Event.subscribe('auth.login', function(response) {
      window.location.reload();
      // you can specify your location also.
    });
    FB.Event.subscribe('auth.logout', function(response) {
      window.location.reload();
      // you can specify your location also.
    });
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>