2012-11-30 47 views
0

我正在從Facebook用戶獲取驗證,以訪問我正在構建的應用程序的基本信息。我正在使用PHP SDK和Javascript SDK。 Javascript是調用登錄屏幕,然後PHP將獲取數據並將其存儲在MySQL表中以在應用程序中使用。硬刷臉Facebook應用登錄身份驗證

這是一個應用程序,您可以對事物投票,我已經設置了這樣的「投票」按鈕是一個Facebook登錄按鈕,如果用戶未通過應用程序驗證。一切都很好,直到他們登錄的地步。它成功地將它們登錄(正常情況下在彈出的登錄對話框中),但無法成功刷新父窗口以反映更改。基本上,獲取用戶信息的唯一方法是登錄並手動刷新應用程序。然後它會正確發送所有數據。我試過location.reload(true);,我試過父窗口重定向,但似乎沒有任何工作。

下面是我的javascript:

<div id="fb-root"></div> 
    <script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'APP_ID', // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
     }); 

     FB.Event.subscribe('auth.login', function(resp) { 
     parent.window.location = 'MY_APP_URL'; 
    }); 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
    </script> 

有硬更有效的方式刷新父窗口?謝謝!

回答

0

如果location.reload不工作,你可以嘗試

window.location.href = window.location.href; 

它不是最完美的解決方案,但它工作

+0

這有同樣的問題,正如我在說什麼。這是一個多頁面的iFrame應用程序,如果這使它有所不同。 – MillerMedia

+0

也許你應該使用FB.getLoginStatus函數,響應對象有關於連接用戶的信息,FB.getLoginStatus(function(response)if(response.status ==='connected'){ // connected } else if(response.status ==='not_authorized'){ // not_authorized } else { // not_logged_in } }); –