1

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

我已经尝试过 easyXDM 和 postmessage jquery 插件,但它们都不能将弹出窗口的响应发送回父页面。它适用于在触发事件的同一页面上请求响应的情况,即使对于跨域也是如此。但是,如果打开弹出窗口,它就不起作用。

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

4

1 回答 1

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>
于 2012-08-10T07:40:06.810 回答