我在Magento服务器上有一个产品页面。有一种情况是用户点击按钮并在该页面上显示加载器,如果他没有登录Facebook,则使用Facebook PHP-SDK打开弹出窗口,要求用户登录。负责PHP-SDK打开此登录弹出窗口托管在另一台服务器上,而不是Magento服务器上。一旦用户登录到Facebook,我需要一种与父页面通信的方式,以便我可以隐藏加载器。截至目前,一旦用户使用弹出窗口登录,弹出窗口将关闭,并且Magento服务器上的产品页面没有响应。因此,没有确认弹出窗口关闭。
我已经尝试过easyXDM和postmessage jquery插件,但是没有一个能够将弹出窗口的响应发送回父页面。它适用于在事件被触发的同一页面上请求响应的情况,即使是跨域也是如此。但是,如果打开弹出窗口,则无法正常工作。
我不确定这是否可以实现。但如果有办法,我会很乐意得到一些帮助。
答案 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>