2010-10-01 28 views
0

Je tente désespérément de forcer une déconnexion avant qu'un utilisateur commence une nouvelle session facebook. Mais avant que la déconnexion ne soit appelée avec succès, auth.login semble se connecter à l'utilisateur et je les redirige. Donc, il semble que ce soit une condition de course, mais je n'arrive pas à comprendre comment le contourner.Évitez l'état de la course dans Facebook API JavaScript avec FB.logout

FB.init({appId: xxxx, status: true, cookie: true, xfbml: true}); 

    //Try to log out user 
    FB.logout(); 

      //Show the FB div 
      if(FB) { 
       FB.Event.subscribe('auth.logout', function(response) { 
        // do something with response 
        logout(); 
       }); 
       FB.getLoginStatus(function(response) { 
        if (response.session) { 
         login(response); 
        } 
       }); 
       FB.Event.subscribe('auth.login', function(response) { 
        login(response); 
        //login redirects the user. Before logout fires() 
       }); 

      } // end if(FB). 

Répondre

2

Quelque chose comme ça peut-être:

//initial login check 
FB.getLoginStatus(function(response) { 
    if (response.session) { 
     //logged in, force logout 
     FB.logout(function() { 
      //logged out, subscribe to events 
      loginEvents(); 
     }); 
    } else { 
     //not logged in 
     loginEvents(); 
    } 
}); 

function loginEvents() { 
    FB.Event.subscribe('auth.logout', function(response) { 
     // do something with response 
     logout(); 
    }); 

    FB.Event.subscribe('auth.login', function(response) { 
     login(response); 
     //login redirects the user. Before logout fires() 
    }); 
}