2012-08-10 83 views
1

我在Magento服務器上有產品頁面。有一種情況,用戶點擊一個按鈕並在該頁面上顯示一個加載程序,如果他沒有登錄Facebook,則使用Facebook PHP-SDK打開一個彈出窗口,要求用戶登錄。PHP-SDK負責人打開此登錄彈出窗口託管在另一臺服務器上,而不是Magento服務器上。一旦用戶登錄到Facebook,我需要一種方法與父頁面進行通信,以便我可以隱藏加載器。到目前爲止,會發生的是,一旦用戶使用彈出窗口登錄,彈出窗口關閉,並且沒有響應回到Magento服務器上的產品頁面。因此,沒有確認彈出關閉。從Facebook登錄彈出回到父級

我已經嘗試easyXDM和postmessage jquery插件,但沒有人可以發回從彈出窗口到父頁面的響應。對於即使在跨域的情況下從事件被觸發的同一頁面上請求響應的情況,它也能很好地工作。但是,如果打開彈出窗口,它不起作用。

我不確定這是否可以實現。但如果有辦法,我會很樂意得到一些幫助。

回答

0

適用於PHP的Facebook SDK可以與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>