2014-09-26 40 views
0

我想從我的網站和FB註銷一個用戶。JQuery和Facebook API函數優先級/優先

先防止默認(防止表單提交)然後getLoginStatus(需要FB訪問令牌),然後調用FB.logout,最後在我的頁面上提交註銷表單。

$("logout-button").click(function (event) { 
    event.preventDefault(); 
    FB.getLoginStatus(function (response) { 
     if (response && !responce.error) { 
      if (response.status === "connected") { 
       FB.logout(); 
      } 
     } 
    }); 
    $("logout-form").submit(); 
}); 

問題是提交優先,FB.logout()永遠不會被調用。

有關如何使該腳本始終首先執行FB.getLoginStatus,等待函數exe並最終調用submit的任何建議?

回答

1

FB.getLoginStatus應該得到在頁面加載使用,所以你可以存儲用戶ID在一個變量 - 要檢查用戶是否登錄:

var userID; 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     userID = response.authResponse.userID; 
    } 
}); 

....然後:

$("logout-button").click(function (event) { 
    event.preventDefault(); 
    if (userID) { 
     FB.logout(); 
    } 
    $("logout-form").submit(); 
}); 

只是我未經驗證的想法,但它應該工作。您應該始終在用戶交互中調用FB.logout和FB.login - 現在您正在FB.getLoginStatus的異步回調函數中調用它。

+0

問題根本不在於accessToken。假設我們忘記了訪問令牌,並且我們有 - > $(「logout-button」)。click(function(event){event.preventDefault(); FB.logout(); $(「logout-form」) 。提交();});問題在於提交首先是FB.logout()第二。正如我的問題標題所示 - 功能優先。 – Georgi 2014-09-27 08:38:56

+0

我根本沒有提到accessToken,在使用js sdk(大多數情況下)時,不需要擔心令牌。 – luschn 2014-09-27 08:39:56

+0

我已將更多信息添加到我的答案中。我確切地知道你在做什麼,不用擔心:) – luschn 2014-09-27 08:49:00