2011-06-22 85 views
2

在下面的代碼中,我嘗試登錄後執行ajax和重定向, 奇怪的是,它登錄了我,但是在FB.login被忽略!Facebook登錄功能在登錄後不會執行任何操作

我也在另一個站點使用這個確切的代碼,它與ajax和重定向工作正常。

Facebook的API爲異步調用,並且不包括在這裏(它的工作原理)

$(".joiner").live("click", login); 
var button = document.getElementById('fb-login'); 

window.fbAsyncInit = function() { 
    FB.init({appId: '0000000000000000', status: true}); 
    FB.getLoginStatus(function(response) { 
     if (response.session) { 
      console.log('User is logged in.'); 
      FB.api("/me", handleMe); 
     } 
     else { 
      console.log('User is not logged in.'); 
      } 
    }); 
}; 



function login(){ 
    FB.login(function(response) { 
     if (response.session) { 
      console.log('Login success.'); 
      FB.api("/me", handleMe); 
     } 
     else {console.log('Login cancelled.')} 
    }); 
} 



function handleMe(response) { 

    $.ajax({ 
     type: 'GET', 
     url: 'www.url.com', 
     data: "uid=" + response.id + "&name=" + response.name + "&gender=" + response.gender, 
     success: function(){ 
      console.log('Ajax successful.'); 
      window.location = "www.url.com"; 
      }, 
     error: function(){console.log('Ajax failed.');} 
    }); 
} 

回答

0

我前一段時間有這個問題。我可以通過在Facebook應用配置中輸入正確的URL並通過此URL運行腳本來解決此問題。當您嘗試從應用配置中的不同url設置進行登錄時,它不起作用。

有一個顯示錯誤代碼的響應,但不是response.session。

+0

thanx,你是什麼意思「正確的URL」我試圖從外面的Facebook運行它,並得到完全相同的結果。另外,你的意思是什麼登錄表單?我不明白你在最後一句中的意思。 – ilyo

+0

我的意思是在Facebook應用程序配置中輸入的網址必須是您測試網站的網址。所以如果您在應用程序配置中輸入www.test.com並想要進行Facebook登錄,則您的網頁來自此域。簡而言之:如果www.test.com進入Facebook應用程序配置,當您從http:// localhost/test進行測試時,它不起作用。 – philipp