2012-06-29 3 views
3

Facebook SDK의 사용을 최적화하려고합니다. 크롬의 네트워크 탭에서 찾고 SDK를로드, 그것은 많은 다른 파일에서 가져옵니다 때 저를 보여줍니다왜 Facebook JavaScript SDK가 이러한 모든 파일을 요청합니까?

enter image description here

첫 번째는 all.js 페이스 북의 API를 포함을한다. 스크린 샷의 나머지 자원은 FB.init에 대한 호출 후에로드됩니다. 빈 및 xd_arbiter.php-3 전화 :

3 에 대한 호출을 수 있습니다. oauth에 2 번 통화가 있습니다. 나는 처음 두 사람에게 3 번 전화하는 이유를 해결할 수 없다.

SDK가 HTTPS를 통해 제공되는로드 페이지 하나가 생성 된 경우 all.js (2 개 iframe 요소를 생성하는 표시 -. fb_xdm_frame_https 한이 상황에서, 2 개 요청이 대신 만들어진 것 같다 3) 다음 iframe 요소가 더 src 속성 (이 자바 스크립트를 통해 나중에 추가됩니다)로 만들어지기 때문에

<div id="fb-root" class=" fb_reset"> 
    <div style="position: absolute; top: -10000px; height: 0px; width: 0px; "> 
     <div></div> 
     <div> 
      <iframe id="fb_xdm_frame_http" name="fb_xdm_frame_http"></iframe> 
      <iframe id="fb_xdm_frame_https" name="fb_xdm_frame_https"></iframe> 
     </div> 
    </div> 
</div> 

빈 페이지가 요청된다. 설정되면 xd_arbiter.php으로 설정됩니다.

는 그래서 3의 2를 설명하지만 다른 에 대한 호출 할 곳 : 빈과 xd_arbiter.php에서 왔? 나는이 코드를 all.js에서 JSBeautifier까지 실행하고 코드를 따라 실행했지만 왜 또는 그 파일이 세 번째로 요청되었는지 볼 수 없습니다.

답변

3

xd_arbiter.php은 페이지와 표시된 모든 후속 위젯 또는 대화 상자 또는 캔버스 페이지로 사용되는 기본 Facebook 사이트 간의 도메인 간 메시징을 용이하게하기 위해 사용되는 인프라의 일부입니다.

/dialog/oauth에 대한 두 가지 요청이 구현에 문제가있는 것으로 보입니다. status: true 외에도 수동으로 FB.getLoginstatus(.., true)을 호출하고 있습니까?

어쨌든, xd_arbiter.php에 대한 세 번째 요청은 단순히 도메인 간 채널을 통해 반환되는/대화 /의 OAuth 요청에 대한 응답이며, xd_arbiter.php 자원이 캐시되기 때문에 (당신은에 의해 같은 분명, 장애인 캐싱을 갖고있는 것 같다 xd_arbiter에 대한 마지막 요청) 실제 비용은 실제로 발생하지 않습니다.

+0

감사합니다. 내가 알 수있는 한'getLoginStatus'에 대한 호출은 없었지만'status' 옵션은'true'로 설정되었습니다. 'false'로 설정하면 내가 기대할 수있는 요청의 수를 줄이는 것처럼 보입니다. –

+0

그러면 암시 적 인증 (ping) (상태 : true)과 명시 적 (explicit) 인증을 모두 수행합니다. 이제는 명시 적으로 만 남았습니다. –

+0

@SeanKinsey하지만 왜 2 개의 Iframe (http, https)이 내 페이지에 있습니까? AFAIK는 FB.login이 팝업창을 열고 내 페이지 URL의 'SRC'와 함께 다른 ** IFRAME을 생성 한 다음 'window'를 통해 부모 창에 정보를 보낼 수 있다는 아이디어입니다. top.sendUserObj ({...})'. 아니면이 모든게 잘못 됐어? [나는 그것이 이런 것 같다고 생각했다] (http://lh5.ggpht.com/_J_O5p0PcuKo/SkWdB-b4ZsI/AAAAAAAAHiQ/UDa_U9xUFAo/s800/cross-domain-iframe-height-lg.jpg) .... (ps 나는 크롬 27을 사용하고 여전히 그 iframe을 봅니다.) 설명해 주시겠습니까? –

관련 문제