在iOS8上登录后,Facebook登录弹出窗口没有关闭

时间:2014-10-05 15:16:09

标签: facebook facebook-javascript-sdk facebook-login

我在iOS8上测试我的网络应用登录流程。我注意到在iOS8上,登录对话框弹出,但登录后,它只是停留在那里,显示一个空白页面。

登录有效,因为它后面的页面显示了用户信息,但弹出窗口只是停留在那里,而它应该自动关闭。在iOS7和iOS6上,它确实关闭了。在桌面浏览器上它也会关闭。

我使用FB.login()测试了其他一些随机网站(例如brainfall.com):同样的事情。

有没有人对此有解决方法?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

检查一下: fb_window_redirect

覆盖de window.open方法。这可以让您知道打开了哪些窗口。

然后您可以重定向FB SDK打开的窗口。

...
window._open = window.open; // saving original function
//Override the function
window.open = function(url,name,params) {
    var new_window = window._open(url,name,params);
    if (typeof onWindowOpen === "function") {
        onWindowOpen(url, name, params, new_window);
    }
    return new_window;
};
...
var openedWindows = [];
var fbWindows = [];
function onWindowOpen(url, name, params, new_window) {
    ...
    // Filter the facebook oauth request
    if (url.contains('facebook.com') 
    && url.contains('oauth')) {
        fbWindows.push(new_window);
    }
    openedWindows.push(new_window);
}
...
//On fb login button pressed callback:
FB.login(function(response) {
    //Try login
    if(response.authResponse) {
        //Login succesful
        // Fb window redirect.
        // see onWindowOpen
        var fbwin = fbWindows[0];
        var redirect_url = ''
        fbwin.location = redirect_url;
    }
},
{scope: 'email,publish_stream,user_birthday'});
...