2012-07-02 55 views
2

我有一個onclick事件的Facebook登錄按鈕。如果你點擊它Facebook Javascript sdk,需要按兩次登錄按鈕

<fb:login-button scope="email, user_about_me, user_birthday" onclick="login()">Login with Facebook</fb:login-button> 

代碼:

function login(){ 
FB.getLoginStatus(function(response) { 
    if (response.status === "connected") { 
     FB.api({ 
      method: 'fql.query', 
      query: 'SELECT name, email, pic_square FROM user WHERE uid=me()' 
       }, 
     function(response) { 
      var check = $.get("includes/facebook_login.php", {command:response[0].email, commandP:response[0].pic_square}, //check if users exist with some selects and create sessions 
       function(data){ 
        if(data == 1){ //on facebook_login.php echo 1 if user exists in our db. if so, redirect. 
         FB.Dialog.remove(FB.Dialog._active); 
         window.location="wishlist.php"; 
        } 
        else if(data == 0){ 
         $("#fb_error").dialog("open"); 
         } 
        }); 
       } 
      ); 
     } 
}, true); 

}

代碼觸發Facebook登錄沒有問題。但是如果這段代碼完成了,它不會將我重定向到下一頁(wishlist.php)。我需要再次點擊Facebook上的登錄按鈕,然後它會重定向我。 我在做什麼錯?

回答

0

我在做什麼錯?

你假設的登錄按鈕與立即登錄,它是完成。所以你的功能login在登錄實際發生之前被調用。

我的建議是:只需將<fb:login-button>完全覆蓋在棋盤上,執行FB.login,然後點擊您自己的按鈕即可調用它...