Jquery Facebook api将打开两个弹出窗口

Jquery Facebook api将打开两个弹出窗口,jquery,facebook,Jquery,Facebook,我正在使用facebook api,但是当我单击“使用facebook登录”时,会打开两个弹出窗口,而不是一个。 如果用户已经登录facebook,单击按钮后,它会打开一个弹出窗口,几秒钟后,通过检查会话返回,我的站点工作正常,但如果用户未登录,则会弹出两个弹出窗口,现在,当用户在弹出的窗口中输入凭证更正并按enter键时会发生什么情况?它会关闭,但由于第二个(已存在)窗口我的脚本无法工作,但我的会话变量如何使用用户ID保存(我真正想要的),(我知道这一点,因为当我在关闭不需要的弹出窗口后刷新我

我正在使用facebook api,但是当我单击“使用facebook登录”时,会打开两个弹出窗口,而不是一个。

如果用户已经登录facebook,单击按钮后,它会打开一个弹出窗口,几秒钟后,通过检查会话返回,我的站点工作正常,但如果用户未登录,则会弹出两个弹出窗口,现在,当用户在弹出的窗口中输入凭证更正按enter键时会发生什么情况?它会关闭,但由于第二个(已存在)窗口我的脚本无法工作,但我的会话变量如何使用用户ID保存(我真正想要的),(我知道这一点,因为当我在关闭不需要的弹出窗口后刷新我的网站索引页面时,我通常会进入我的个人资料页面)。

我也提到了解决问题,但没有用。请说明只打开一个弹出窗口

我将此代码用作:

<script src="http://connect.facebook.net/en_US/all.js"></script>



<!-- Start of facebook login -->
<div id="fb-root"></div>
<fb:login-button size="large" id='login'">
      Login with Facebook
</fb:login-button>
<script>
  // initialize the library with the API key
  window.fbAsyncInit = function() {
      try{
        FB.init({
            apiKey      : 'API KEY',
            status      : true, 
            cookie      : true,
            xfbml       : true,
            oauth       : true
        }); 

        FB.getLoginStatus(function(response){
            loginHandler(); 
        });
      }catch(error){}
  };  
    function loginHandler(response,fail)
    {
        try{
            if(response && response.authResponse){
                FB.api('/me', function(response,fail) {

                    var email=response.email;
                    var firstName=response.first_name;
                    var lastName=response.last_name;
                    var gender=response.gender;
                    var dob=response.birthday;
                    var remainLogin=$('#remainLogin').val();

                    $('#login').attr("disabled", true);

                    $.ajax({
                        url: "loginViaFacebook",
                        type: "POST",
                        data: {email:email,firstName:firstName,lastName:lastName,gender:gender,dob:dob,remainLogin:remainLogin},
                        success: function (data) {

                            if (data.indexOf("true") != -1){ 
                                location.href = 'MainHome.jsp';
                            }
                            else 
                                jAlert('Email not registered ... ','Email not found',ERROR);

                            $('#login').attr("disabled", false);
                        },
                        error: function(xhr, ajaxOptions, thrownError){
                            if(xhr.status==404)//Wrong url
                                jAlert('Check the url','ERROR',ERROR);
                            else if(xhr.status==500)//Exception in server side coding
                                jAlert('Exception in server coding, check your email or try one more time','ERROR',ERROR);
                            else if(xhr.status==408)//timeout
                                jAlert('Server taking time to respond','ERROR',ERROR);
                            else 
                                jAlert('Some error occured ' + thrownError,'ERROR',ERROR);

                            $('#login').attr("disabled", false);
                        },
                        timeout : 5000
                    });

                });
            }
        }catch(error){alert(error);}
    }
    var popUp;
    $('#login').bind('click', function(response) {
        try{
            FB.login(loginHandler, {scope: 'email,user_birthday'});
        }catch(error){}
    });

    $('#logout').bind('click', function() {
        try{
            FB.logout(function(response){});
        }catch(error){}
      });


  </script>


<!-- End of facebook login -->

您正在“window.fbAsyninit”中调用“loginHandler”,并单击按钮,将其替换为fbinit方法,然后重试

  FB.getLoginStatus(function(response){
  if (response.status === 'connected') {
           loginHandler();

        }             
   });

这个问题实际上是不可能阅读的。离开它,它已经5年了,这个问题已经解决了:DStackoverflow不仅仅是询问者获得答案的工具,也是其他人发现这些问题并解决他们的问题的工具。我和大约600名其他人一起,发现这个页面是为了解决我们的问题。所以,是的,我会在提问时发表评论答案是难以辨认的,因为它不仅是为你,它是为我们所有人。