2014-09-26 91 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