我有一个Facebook应用程序,需要从Graph查询大量数据。我目前可以使用提取所有数据,但是用户必须等待Facebook每次(5.1-1.0秒)返回查询。我想把这个功能放在javascript中,这样它就可以在后台连续运行,并将数据提取并存储在javascript数组中,以备用户需要时使用。
我是javascript web工作者的新手,但我知道他们有一些限制,使他们无法访问以下内容:
这些限制是否阻止我在我的网络工作者中加载并使用它进行调用?
另外,我尝试使用:importScripts("http://connect.facebook.net/en_US/all.js");
作为加载脚本的替代方式--它给了我一个“未定义的”错误。
目前,我的web工作人员将数据传递到和从我的页面(包括用户访问令牌),但我不知道如何在没有SDK的情况下进行api调用。
注意:我的应用程序只使用javascript,没有数据库,也没有后端服务器代码(php、ruby等)。我要保持这种状态。
发布于 2013-12-30 17:09:03
当您连接到Facebook时,您应该在响应中收到一个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和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-11-11 22:48:22
curl http://connect.facebook.net/en_US/all.js -s | grep "document" -q && echo "Nope."
这样你就不用实际执行了:它会打印“不行”。
抱歉的。
这就是说:您应该检查async
标志在XMLHttpRequest.open
上。
https://stackoverflow.com/questions/13633385
复制相似问题