2011-10-14 2 views
0

iframe은 승인되지 않은 응용 프로그램에 대해서는 Facebook에서 허용하지 않지만 FB에서는 '페이지'로 표시 할 수 없습니다. 너도. 작동중인 유일한 디스플레이 모드는 팝업입니다. 로그인 및 FB.ui 대화 상자는 페이스 북 로그인으로 다른 모든 웹 사이트에서 작업 중이지만 팝업 차단기에 의해 차단됩니다. 사용자가 클릭하여 FB.login 및 FB.ui 함수를 호출하는 경우에도 팝업 차단기가 시작됩니다. 이것은 정말로, 정말로 성가신 일입니다. 그러니 제발 도와주세요.Facebook 표시 : FB.ui에서 '페이지'가 작동하지 않고 브라우저에서 팝업이 차단되었습니다.

<html> 
<head> 
</head> 
<body> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"> 
</script> 
<script> 
function xyz() 
{ 
FB.init({ 
appId:'113381182103752', cookie:true, 
status:true, xfbml:true, oauth:true  
}); 
FB.getLoginStatus(function(response) { 
if(response.status=="connected") 
{ 
document.getElementById("status").innerHTML="User is connected"; 
} 
else if(response.status=="unknown") 
{ 
FB.login(function(response) { 
if(response.authResponse) 
{ 
var token = response.authResponse.accessToken; 
document.getElementById("tokendiv").innerHTML=token; 
} 
}); 
document.getElementById("status").innerHTML="User is logged out"; 
} 
else if(response.status=="not_authorized") 
{ 
FB.ui({ 
client_id: '113381182103752', 
method: 'oauth', 
redirect_uri: 'http://127.0.0.1:8888/test3.php', 
response_type: 'token', 
display: 'page' 
});  
document.getElementById("status").innerHTML="User is connected but app is not authorized"; 
} 
else 
{ 
document.getElementById("status").innerHTML="Error"; 
} 
}); 
} 
</script> 
<div id="tokendiv"></div> 
<div id="status"></div> 
<button onclick="xyz()">Click Here</button> 
</body> 
</html> 

답변

1

여기에 2 문제가 있습니다

1) 디스플레이 : '팝업'방법 필수입니다 : 때문에 보안 (클릭 재킹 및 피싱의 자바 스크립트 SDK에 대한 'OAuth를'또는 FB.login). 어쨌든 FB.login을 사용하여 권한을 얻거나 인증하는 것이 더 편리 할 것이므로 제안 할 것입니다.

2) 사용자가 시작했지만 FB.login이 자바 스크립트 호출 스택에 깊이 중첩되어 있기 때문에 팝업이 브라우저에 의해 차단되었습니다. 사용자가 시작해야하고 FB.login이 중첩되지 않도록 코드 재 설계를 시도해야합니다.

+0

예 FB.ui를 FB.login으로 대체했습니다. 더 편리하다고 말하기 때문입니다. 좀 더 많은 코드를 만들었고 모든 것이 팝업 문제를 제외하고는 괜찮습니다. 따라서 코드를 수정하고 여기에 다시보고하려고합니다. 감사합니다. – Badarse

+0

FB.login을 주문한 후 예 팝업이 작동합니다. – Badarse

0

팝업 처리를 위해 FB.getLoginStatus 대신 또는 FB.ui 대신 FB.login을 사용하십시오.

FB.login(function(response) { 
    if (response.authResponse) { 
    // user is logged in and has permissions 
    } 
}, {scope:'email'}); 
+0

행운이 없습니다. FB.getLoginStatus 함수에 중첩 된 FB.login에 의해 생성 된 팝업을 이미 차단하고있었습니다. 어쩌면 어제 차단하지 않았기 때문에 팝업 차단기가 로컬 호스트의 페이지를 블랙리스트에 올렸을 가능성이 있습니다. 그러나 '페이지'는 어떨까요? '디스플레이'는 왜 작동하지 않습니까? 누구나 자신의 컴퓨터에서 코드를 테스트하고 동일한 문제가 있는지 파악할 수 있습니까? – Badarse