2012-12-12 2 views
1

버튼 클릭 이벤트에서 Facebook JS SDK의 FB.getLoginStatus를 호출합니다. 내 문제는 status 매개 변수가 true로 설정된 경우 브라우저 팝업 차단기가 트리거되어 로그인 대화 상자가 표시되지 않도록하는 것입니다. 그러나 상태를 false로 설정하면 팝업 차단기가 트리거되지 않습니다. 페이지를 새로 고침하지 않고 사용자가 Facebook에 로그인 한 경우 사이트에서 알아야 할 정보가 필요합니다. False 매개 변수 값은 FB가 캐시 된 로그인 상태를 얻음을 의미합니다. 사용자가 여전히 사이트에 로그인 한 상태에서 로그 아웃하면 잘못 될 수 있습니다.FB.getLoginStatus 브라우저 팝업 차단기를 시작합니다. 어떻게 그걸 막을 수 있니?

어떻게이 문제를 해결할 수 있습니까? 여기

는 "클릭"이벤트와의 연결을 끊고 문제

$('.my-button').click(function() { 

      FB.getLoginStatus(function (response) { 

       if (response.status != 'connected') { 

        FB.login(function (r) { 
         if (r.status == 'connected') { 
          alert('logged in'); 
         } 
        }); 
       } 

      }, true); 

     }); 

답변

1

당신이 getLoginStatus에 forceCheck를 통과 할 때, 콜백이 비동기 적으로 호출되기 때문에 이것은 아마에게, 보여 일부 코드이다. 브라우저 또는 팝업 차단기가 호출 스택에서 사용자가 시작한 클릭 이벤트를 찾지 못하여 팝업을 차단합니다. 나는 현재 같은 문제에 물리고있다.

옵션 :

1) FB.login을 직접 호출하십시오.

단점 : 로그인 한 사용자에게도 불쾌한 팝업 플래시.

2) getLoginStatus로 사용자가 로그인하지 않았거나 앱이 승인되지 않았 음을 감지하면 $ ('. my-button') 근처에 별도의 로그인 버튼을 삽입하십시오. 사용자는 Facebook에 연결하려면 로그인 버튼을 클릭해야합니다. 두 번째 버튼의 클릭 핸들러에서 FB.login()을 직접 호출하십시오.

단점 : 전환율 -50

지금이 시도) 및 결과를보고합니다.

+1

사용자가 버튼을 클릭 (예 : 페이지로드)하기 전에 FB.getLoginStatus를 호출하고 결과를 변수에 저장하고 변수 상태에 따라 클릭 핸들러에서 FB.login을 직접 호출 할 수 있습니다 , 아니? – Pierre

관련 문제