javascript – 从父窗口(facebook oAuth generation)获取重定向的子窗口的url

我正在从一个封闭的应用程序开发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协议错误

点赞