2012-05-17 4 views
1

Я работаю в facebook api, но что происходит, когда я нажимаю «Войти с facebook» это открывает два всплывающих окна вместо одного.Facebook api открывает два всплывающих окна

его, как если пользователь это уже вошли в фейсбуке, по нажатию на кнопку она открывает всплывающее и в доли секунды возвращается по проверки сессии и мой сайт работает совершенный в этом случае, но в случае, если пользователь не вошел в систему, в этом случае 2 pop ups выходит, теперь, что происходит, когда пользователи входят в учетные данные правильные и прессы введите в появившемся окне он закрывается, но из-за второй (уже присутствует) окно мой скрипт не работает, но любой, как моя переменная сессии получает сохраненную с USERID(что на самом деле я хочу), (Я знаю эту вещь, потому что, когда я обновляю страницу индекса сайта после закрытия нежелательного всплывающего окна, я обычно иду на свою страницу профиля).

Я ссылался на this page, а также для решения проблемы, но бесполезно. прошу пролить свет, чтобы открыть только одно всплывающее окно.

Я использую этот код, как:

<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 --> 
+0

Этот вопрос практически невозможно прочитать. – Martin

+0

Оставьте это, его 5 лет, эта проблема исправлена: D –

+0

Stackoverflow не только для айзеры, чтобы получить ответы, но и для других людей, чтобы найти эти вопросы, а также решить их проблемы. Я, наряду с ~ 600 другими, нашел эту страницу, чтобы решить нашу проблему. Так что да, я буду комментировать, когда вопросы/ответы неразборчивы, потому что это не просто для вас, это для всех нас. – Martin

ответ

0

вы вызываете «loginHandler» в «window.fbAsyncInit», а также по нажатию кнопки, заменить это в методе fbinit и попробовать

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

     }    
    }); 
+0

даже если это не работает ................. –