2012-08-01 4 views
3

Facebook Javascript SDK를 사용하는 모바일 웹 응용 프로그램의 경우 사용자의 로그인 상태를 확인한 다음 필요한 경우 Facebook 로그인 대화 상자를 표시하려고합니다. 다음 코드는 우리의 웹 응용 프로그램에서 특정 버튼의 클릭 핸들러 내에서 실행된다FB.login() 팝업이 모바일 웹 응용 프로그램에서만 차단됨

$('#button').click(function() { 
    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      // do something with the logged in and authorized user 
     } else if (response.status === 'not authorized') { 
      // logged in but has not authorized our app 
     } else { 
      // not logged in 
      FB.login(); 
     } 
    }); 
}); 

는 사용자가 페이스 북에 로그인되지 않는다는 보장이 잘 작동 및 데스크톱 웹 브라우저의 로그인 대화 상자를 표시 할 때 버튼 가 눌려져 있지만 모바일 웹에는 적합하지 않습니다 (적어도 다양한 브라우저의 Android에는 해당되지 않지만 현재 iPhone에 액세스 할 수는 없습니다). 모바일 웹 앱에는 아무 것도 나타나지 않고 팝업 차단기를 사용 중지하면이 팝업을 허용할지 묻는 메시지가 표시됩니다.

동작이 다른 이유 및 알려진 해결 방법이 누구인지 아는 사람이 있습니까? 감사!

답변

7

코드는 이 아니며 모든 데스크톱 브라우저에서이 작동합니다. 일부 브라우저 (모바일 및 데스크톱)는 사용자 클릭에 의해이 시작되지 않는 한 팝업 팝업을 차단합니다 (). FB.login() 기능 는 사용자의 클릭에 대한 응답으로 호출되고 있기 때문에 예를 들어,

$('#mybutton').click(function() { 
    FB.login(); 
}); 

작동합니다. 따라서 코드를 수정하려면 FB.login() 호출을 '로그인'버튼과 사용자가 해당 버튼을 클릭하도록 유도하는 텍스트를 표시하는 코드로 바꿉니다.

+0

안녕 Gil, 귀하의 회신에 감사드립니다. 사용자 클릭에 대한 응답으로 코드가 호출되도록 지정하는 것을 잊어 버렸기 때문에 코드를 업데이트하고 있습니다. 사용자 클릭이 실제 팝업 (FB.login)을 트리거하는 AJAX 호출 (FB.getLoginStatus)을 트리거하면 팝업 차단에 어떤 영향을 줍니까? – aarontam

+0

내가 말한 것은 여전히 ​​적용됩니다. * callback * 함수에서'FB.login()'을 호출하고 있기 때문에 브라우저는 사용자가 * click * 액션을 벗어난 것으로 간주한다. –

+0

Gotcha. 가능한 경우 사용자가 다른 버튼을 클릭하는 것을 피하기 위해이 흐름을 개선하는 다른 방법을 살펴 보겠습니다. – aarontam

관련 문제