2012-11-29 4 views
2

그래프 API에서 많은 데이터를 쿼리해야하는 Facebook 애플리케이션이 있습니다. 페이스 북 javascript-sdk를 사용하여 모든 데이터를 가져올 수 있지만 매번 (.5-1.0 초) 페이스 북이 쿼리를 반환 할 때까지 기다려야합니다. 이 기능을 자바 스크립트 웹 작업자에 넣어서 사용자가 필요할 때 계속해서 데이터를 가져 와서 자바 스크립트 배열에 저장하는 백그라운드에서 실행되도록했습니다.웹 작업자와 함께 facebook javascript sdk 사용

나는 자바 스크립트 웹 근로자에 ​​새로운 오전하지만 나는 그들이 다음에 액세스하는 것을 방지 한계가 있음을 알고

  • DOM을 (이 스레드 안전하지)
  • 창 객체
  • 문서 객체

가하는 부모 개체는 이러한 제한이 t로드 할 수있는 나를 방지 그는 내 웹 작업자의 Facebook Javascript-SDK를 사용하여 전화를 걸었습니까?

또 다른 방법으로 스크립트를로드하는 대체 방법으로 importScripts("http://connect.facebook.net/en_US/all.js");을 사용하여 "Uncaught Undefined"오류가 발생했습니다.

현재 웹 페이지 (사용자 액세스 토큰 포함)와 데이터를주고받는 웹 작업자가 있지만 SDK없이 API 호출을 수행하는 방법을 알지 못합니다.

참고 : 내 응용 프로그램은 자바 스크립트 만 사용하고 데이터베이스도없고 백엔드 서버 코드도 없습니다 (PHP, 루비 등). 나는 그것을 이렇게 유지할 필요가있다.

답변

0
curl http://connect.facebook.net/en_US/all.js -s | grep "document" -q && echo "Nope." 

이렇게하면 실제로 실행할 필요가 없습니다. "아니오"라고 인쇄됩니다.

죄송합니다.

그렇습니다 : XMLHttpRequest.openasync 플래그가 있는지 확인해야합니다.

1

Facebook SDK에 연결하면 응답에 accessToken이 수신됩니다.

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    if (response.status === 'connected') { 
    var accessToken = response.authResponse.accessToken; 
    } 
}); 

웹 작업자에이 accessToken 보내기 :

var myWorker = new Worker(url); 
myWorker.sendMessage({accessToken:accessToken}); 

는 이제 (웹 노동자 내부) XMLHttpRequest를하고, 페이스 북 그래프 API를 사용할 수 있습니다

//inside your worker 
onmessage = function (oEvent) { 
var accessToken = oEvent.data.accessToken; 
if(accessToken){ 
    function loaded(){ 
     var fbResponse = this.responseText; 
     postMessage({fbData: fbResponse}); 
    } 

    var xhr = new XMLHttpRequest(); 
    xhr.onload = loaded; 
    if (xhr != null) { 
     xhr.open('get', 'https://graph.facebook.com/me?type=normal&method=GET&access_token='+accessToken, true); 
     xhr.send(); 
    }else { 
     postMessage({error: 'XHR not supported'}); 
    } 
}else{ 
    postMessage({error: 'No access token'}); 
} 
};