2

GraphAPIから大量のデータをクエリする必要があるFacebookアプリケーションがあります。現在、Facebook javascript-sdkを使用してすべてのデータをプルできますが、ユーザーはFacebookが毎回クエリを返すのを待つ必要があります(.5-1.0秒)。この機能をjavascriptWebワーカーに入れて、バックグラウンドで継続的に実行され、ユーザーが必要なときにデータをプルしてjavascript配列に格納できるようにしたかったのです。

私はjavascriptWebワーカーを初めて使用しますが、以下にアクセスできない制限があることを知っています。

  • DOM(スレッドセーフではありません)
  • ウィンドウオブジェクト
  • ドキュメントオブジェクト
  • 親オブジェクト

これらの制限により、WebワーカーにFacebook Javascript-SDKをロードして、それを使用して電話をかけることができなくなりますか?

また、次を使用してみimportScripts("http://connect.facebook.net/en_US/all.js");ました。スクリプトをロードする別の方法として、「UncaughtUndefined」エラーが発生しました。

現在、Webワーカーが自分のページ(ユーザーアクセストークンを含む)との間でデータをやり取りしていますが、SDKを使用せずにAPI呼び出しを行う方法がわかりません。

注:私のアプリケーションはjavascriptのみを使用しており、データベースもバックエンドサーバーコード(php、rubyなど)もありません。私はそれをこのように保つ必要があります。

4

2 に答える 2

1

Facebook SDK に接続すると、応答で accessToken を受け取る必要があります。

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

この accessToken を Web Worker に送信します。

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

XMLHttpRequest と Facebook グラフ API (Web ワーカー内) を使用できるようになりました。

//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'});
}
};
于 2013-12-31T01:09:03.827 に答える