2013-04-28 1 views
3

페이스 북 SDK로 작업하기 시작했으며 사용자 이름과 친구 목록을 가져 오는 스크립트를 사용하려고합니다. 이것은 내가 작업하고있는 초기화 코드입니다 :Facebook Javascript SDK로드 중

window.fbAsyncInit = function() 
{ 

    console.log("initialising"); 
    FB.init(
    { 
     appId  : 'APPID', 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : false // dont parse XFBML 
    }); 


    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      console.log("RESPONSE IS CONNECTED!"); 
     } else if (response.status === 'not_authorized') { 
      console.log("NOT AUTHORIZED"); 
     } else { 
      console.log("NOT LOGGED IN"); 
      FB.login(); 
     } 
    }); 


}; 

(function(d, s, id){ 
console.log("Loading SDK!"); 
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-root 요소를 가지고 있습니다. 약 절반의 시간 동안 SDK가 잘로드되고 콘솔에 초기화 및 연결 메시지가 표시됩니다. 그러나 나머지 절반은 "SDK로드 중"메시지 만 표시하고 다른 이유는 무엇이든 SDK가 올바르게로드되지 않는다는 것을 전제로합니다. 나는 페이지에 대한 탐색에로드되지만 드물게 리프레시에는 거의로드되지 않는 것으로 나타났습니다.

제 질문은 SDK가 시간을 많이로드하지 못하게하고 어떻게 문제를 해결할 수 있습니까?

+0

흠 ... 필요한'fb-root' 문서의 본문에있는 요소 중 하나가 있습니까? – Lix

+0

오, 그래, 나는 그것을 포함하지 않아서 미안해. 주요 질문을 수정하겠습니다. – Maccyjam

답변

1

페이스 북 자바 스크립트 SDK의 사용에 관한 페이스 북의 최신 documentation에 따르면, 방법은 비동기 적으로 업데이트 된 SDK 포함합니다 :

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

그것은이 더 신뢰성이 왜 나에게 즉시 명백한 아니에요을 당신의 접근 방식에 비해서 나는 이것이 내가 내 사이트에서 사용하는 것이고 어떤 간헐적 인 문제도 경험하지 못했다고 말할 수있다.

+0

두 코드 샘플을 완전히 압축 해제하는 데 약간의 시간이 걸렸지 만,이 두 가지 방법의 차이점은 'js.async = true'설정이라는 것뿐입니다. –

+0

답장을 보내 주셔서 감사합니다. 동일한 일이 일어나고 "초기화 중"메시지가 표시되지 않기 때문에이 작업이 아무 것도 수행하지 않은 것처럼 보입니다. 나는 다른 웹 사이트에서도 발견 한 SDK를 얻는 다른 방법을 시도했지만, 아무 소용이 없다. – Maccyjam