Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户通过Facebook JavaScript sdk登录,在注销后自动登录_Facebook_Jquery_Facebook Javascript Sdk - Fatal编程技术网

用户通过Facebook JavaScript sdk登录,在注销后自动登录

用户通过Facebook JavaScript sdk登录,在注销后自动登录,facebook,jquery,facebook-javascript-sdk,Facebook,Jquery,Facebook Javascript Sdk,我能够顺利地将该用户登录到我的网站,并从facebook获取他的详细信息,但我无法将其注销。 在登录时,我将用户登录到成员的内部页面。在那里,他按下了我网站的注销按钮。在按下按钮时,他被送回头版,当然,头版会被重新加载 我猜登录的用户在按下注销按钮时会被重定向到首页。但登录事件会自动触发,他会再次登录 我正在使用以下代码 <script type="text/javascript"> $(function(){ var button; if(doc

我能够顺利地将该用户登录到我的网站,并从facebook获取他的详细信息,但我无法将其注销。
在登录时,我将用户登录到成员的内部页面。在那里,他按下了我网站的注销按钮。在按下按钮时,他被送回头版,当然,头版会被重新加载

我猜登录的用户在按下注销按钮时会被重定向到首页。但登录事件会自动触发,他会再次登录

我正在使用以下代码

       <script type="text/javascript">
 $(function(){  
    var button;
    if(document.cookie.indexOf("fbsr_myappid") > 0){// I am checking if the cookie value is set I am making status in FB.init() false. 
            var fb_status = false;
        }   
   else{
            var fb_status = true;
        }
    window.fbAsyncInit = function(){


        FB.init({ appId      : 'myappid',
            status     : fb_status,
            cookie     : true,
            xfbml      : true,
            oauth      : true 
        });
        showLoader(true);

        function updateButton(response) {
            button  = document.getElementById('fb-auth');
            if(response.authResponse) {
                FB.api('/me', function(info){
                    $.post("/web/register/faceBookRegistration",{data:info}).done(function(data){
                        if(typeof(data) != undefined){
                            window.location = "/web/login/loadFaceLogin"; // I am doing an ajax post to my login controller having loadFaceMember function. 
                        }
                    });
                    login(response, info); 
                });

                button.onclick = function(){
                // I think I should use the folowing code somewhere else
                    FB.logout(function(response){
                        logout(response); 
                    });
                };
            } else {

                button.onclick = function(){
                    showLoader(true);
                    FB.login(function(response){
                        if(response.authResponse) {
                            FB.api('/me', function(info){
                                login(response, info); 
                            });
                        } else {
                            showLoader(false);
                        }  
                    }, {scope:'email, user_birthday,user_about_me' });
                }
            }
        }
        FB.getLoginStatus(updateButton);
        FB.Event.subscribe('auth.statusChange', updateButton);
    };

    (function() {
        var e = document.createElement('script');
        e.async = true;
        e.type = 'text/javascript';
        e.src = document.location.protocol +  '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());

    function login(response, info){
        if (response.authResponse) { 
            var accessToken = response.authResponse.accessToken;
            showLoader(false);
        }
    }
    function logout(response){
            FB.logout(function(response){
               console.log("User is now logged out."); 
            });
        showLoader(false);
    }



    function showLoader(status){
        if (status)
            console.log("Yes showLoader.");
        else
            console.log("Yes dont showLoader.");
    }
  }); 
我想如果我能够将注销控制器中的上述函数与以下几行javascript代码链接起来

      FB.logout(function(response){
           logout(response);
       }
我的工作会完成的


任何帮助都将不胜感激。

是的,我的猜测是正确的。我需要修改我的注销功能。这是修改后的函数

             function logout(response){
        console.log("From logout" + response);
        if(!response.authResponse){
            window.location = "/web/login/";
            return;
        }

           FB.logout(function(response){
               FB.Auth.setAuthResponse(null,'unknown');  
                 logout();
           });
        }
感谢@G W为我指明了正确的方向。
每个人都可以随意评论和改进它。我对此表示欢迎。我的方法基于此

这发生在页面重新加载上?当单击“注销”正确时,页面不会自动重新加载?在登录时,我将用户登录到成员的内部页面。在那里,他按下了我网站的注销按钮。之后,他再次被带回到首页,因此,是的,你是正确的页面重新加载正在发生。我希望我已经传达了这个场景。我已经成功地使用这个注销功能注销了Facebook API。也许值得一试
function logout(){FB.logout(function(response){window.location.reload();});}
@G W.谢谢,我试过了,但我想我应该停止再次触发日志事件。我应该在检查的基础上设置一些条件来停止日志记录。
             function logout(response){
        console.log("From logout" + response);
        if(!response.authResponse){
            window.location = "/web/login/";
            return;
        }

           FB.logout(function(response){
               FB.Auth.setAuthResponse(null,'unknown');  
                 logout();
           });
        }