我正在从一个封闭的应用程序开发facebook集成,facebook通过点击url给出了获取身份验证代码的方法
https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri=https://www.facebook.com/connect/login_success.html
当我们点击这个url facebook登录窗口出现在屏幕上,登录facebook后重定向到网址{facebook_domain} /connect/login_success.html?code=XXXXXX _ = _
我需要在我父窗口或java代码的url中使用此代码,以便我可以进一步处理它.
方法我想的是在子窗口中打开上面的facebook链接,使用window.open或iframe并在父窗口中获取子窗口的重定向url,但是我无法在父窗口中获取子窗口的重定向url .
我想不出任何其他方法.对于facebook oAuth代码生成您可以查看facebook开发人员文档(手动构建登录流程).
最佳答案 您可以按如下方式编写自定义打开窗口函数,以跟踪父页面中所有打开的子窗口,并在获取子对象然后获取其href一段合理时间后启动超时事件以关闭子项.我还没有对它进行过测试,但是应该让你知道在哪里研究.
//assuming there is only one child window
var childWindow;
var windowsOpened = [];
function openChildWindow(url,name,params){
windowsOpened.push(window.open(url,name,params));
triggerTimeout(windowsOpened[0]);
return windowsOpened[0];
}
function triggerTimeout(win){
setTimeout(function(){ childWindow = win;},10);
}
function getUrlOfChild(){
if(childWindow){
alert(childWindow.location);
childWindow.close();
}
}
确保在服务器上运行并测试它,而不是直接作为file://test.html.否则会抛出js协议错误