我构建了一个 Firefox 扩展,我正在使用图形 api。目前,我在启动浏览器时捕获了每个用户的访问令牌,例如: https ://stackoverflow.com/questions/10301146/facebook-login-within-a-firefox-add-on
这很好用,但有点愚蠢,因为没有人会在每个 firefox 会话中使用扩展。所以我想要做的是,捕获访问令牌或更准确地调用 Wladimir Palant 按需推荐的方法。我的代码看起来像这样,而 getAccessToken() 是提到的方法。
onLoad: function (){
var NoteHandler = window.arguments[0];
var sjcl = NoteHandler.sjcl;
NoteHandler.getAccessToken();
decryptionDialog.noteHandler = NoteHandler;
decryptionDialog.sjcl = sjcl;
var currID = decryptionDialog.getID();
if(currID==""){
window.close();
return false;
}else{
http_request = new XMLHttpRequest();
http_request.open('Get', 'https://graph.facebook.com/'+currID+'/notes?access_token='+NoteHandler.token, false);
http_request.overrideMimeType("text/json");
http_request.send(null);
decryptionDialog.value = decryptionDialog.ResponseToArray(http_request.responseText);
....
但问题是当 getAccessToken() 仍在等待访问令牌时,onLoad() 方法不会等待并继续。因此,在发送请求时 NoteHandler.token 为空。有谁知道,因为我对 javascript 比较陌生。