Javascript 在Firefox插件中验证facebook用户
我正在尝试编写一个Firefox插件,用于访问facebook上的数据。 现在我不知道如何获得访问令牌。 我尝试为桌面应用程序实现客户端流(使用固定的重定向uri),但我在那里遇到的最大问题是JavaScript不允许我等待重定向发生。 你知道怎么做吗Javascript 在Firefox插件中验证facebook用户,javascript,facebook,authentication,firefox-addon,Javascript,Facebook,Authentication,Firefox Addon,我正在尝试编写一个Firefox插件,用于访问facebook上的数据。 现在我不知道如何获得访问令牌。 我尝试为桌面应用程序实现客户端流(使用固定的重定向uri),但我在那里遇到的最大问题是JavaScript不允许我等待重定向发生。 你知道怎么做吗 据我所知,因为我没有网页,JavaScript API没有多大帮助,对吧?我想你正在打开https://www.facebook.com/dialog/oauth在浏览器选项卡中,允许用户登录并授予您访问权限。你不需要在这里传递一个有效的重定向U
据我所知,因为我没有网页,JavaScript API没有多大帮助,对吧?我想你正在打开
https://www.facebook.com/dialog/oauth
在浏览器选项卡中,允许用户登录并授予您访问权限。你不需要在这里传递一个有效的重定向URL,你可以使用一些肯定不起作用的东西,比如http://my.extension.local/
。然后,您只需要检测选项卡何时被重定向到该URL。如果您有一个经典扩展名,您可以在该选项卡的
元素上注册一个,并查看onLocationChange()
调用-一旦您看到一个以http://my.extension.local/
您可以取消请求并关闭选项卡,必要的数据在URL中。如果使用,可以将ready
事件侦听器附加到选项卡上,如下所示:
var tabs = require("tabs");
tabs.open({
url: "https://www.facebook.com/dialog/oauth?...",
inBackground: false,
onReady: function(tab)
{
if (tab.url.indexOf("http://my.extension.local/") == 0)
{
...
}
}
});
“JavaScript API”是什么意思?还是一个经典的基于XUL的扩展?我指的是facebookNo提供的,JavaScript SDK没有多大帮助-由于安全问题,您无法将其加载到扩展中。好的,我有一个常规扩展并尝试了:
var facebook={init:function(){var app_id='MY app id';var redirect_uri='fb.com/login_success'var url='https://www.facebook.com/dialog/oauth?...'window.open(url);window.addEventListener(“加载”,函数(){browser.addProgressListener(fbListener,Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);},false);}
但从未调用过代码。我也尝试过只监听页面加载,但也不起作用。@wiseveri:所以您正在打开一个新窗口,但没有保留对它的引用。相反,您会监听所处窗口的“加载”事件(当然不会发生,因为该窗口已加载)。如果该事件假设触发,则您正在尝试访问名为browser
的变量,当然该变量在任何地方都没有定义。呵呵……正是……将其更改为:var myWindow=window.open(url);myWindow.addEventListener('load',function(){gBrowser.addProgressListener(myListener);},false);
还是什么都没有。我如何访问新窗口的
元素?我的方法显然不起作用。进度侦听器和浏览器元素上的页面没有帮助。这是一个闭包-您正在访问自己窗口的gBrowser
变量。请使用myWindow.gBrowser
。