3

FB.ui에 대한 모든 호출에는 어떤 작업도 수행되지 않습니다. Chrome에서 'display'속성이 'iframe'또는 'dialog'로 설정된 경우 다음 오류가 발생합니다.FB.ui 작동하지 않음

원점이 "https://www.facebook.com"인 프레임이 출처가 "http://my.domain.com"인 프레임에 액세스하지 못하도록 차단했습니다. 액세스를 요구하는 프레임은 "https"의 프로토콜을 가지며, 액세스되는 프레임은 "http"의 프로토콜을 갖는다. 프로토콜이 일치해야합니다.

Firefox 나 IE는 콘솔에 아무 것도 표시하지 않지만 아무 것도 발생하지 않습니다. 따라서 이것이 실제 XSS 문제인지 여부는 확실하지 않습니다. 기록을 위해 전체 웹 사이트가 HTTP에서 실행 중이며 HTTPS 쿼리를 명시 적으로 지정하지 않았습니다.

소스 코드는 다음과 같습니다

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : XXXXXXXXX, 
     status  : true, 
     cookie  : true, 
    }); 

    FB.Event.subscribe('auth.logout', function(response) { 
     window.location.reload(); 
    }); 

    window.selectedFacebookFriends = [YYYYYYYYY]; 

    window.inviteFacebookFriends = function() { 
     FB.getLoginStatus(function(response) { 
      if (response.status === 'connected') { 
       to = window.selectedFacebookFriends.join(','); 
       FB.ui({ 
        method: 'apprequests', 
        message: 'Join ZZZZZZZZZ, it\'s cool there!', 
        to: to 
       }, function(response) {}); 
      } 
     }); 
    } 
}; 

// Load the SDK asynchronously 
(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

나는 FB.ui 다른 방법이 많이 시도하고, 콘솔에서 직접 호출, 모든 매개 변수를 변경,하지만이 도움이되지 않았다.

Facebook 로그인은 FB.api를 사용하여 시도한 모든 그래프 요청뿐만 아니라 완벽하게 작동합니다. 이 문제는 FB.ui 또는 그 구현에있는 것으로 보입니다.

나는이 웹 사이트에서 꽤 많은 비슷한 문제를 발견했다. 그러나 내가 만났던 해결책 중 어느 것도이 문제를 해결하지 못했다.

친절한 도움을 미리 감사 드리며 관련 정보를 잊어 버린 경우 망설이지 마십시오.

답변

5

팝업 대화 상자를 원하고이 문제가 발생하면 fb.ui에서 display: 'popup'을 명시 적으로 지정하십시오.