2014-10-05 116 views
1

我在iOS8上測試我的web應用登錄流。我注意到,在iOS8上,登錄對話彈出,但登錄後,它只停留在那裏,顯示一個空白頁面。iOS8登錄後Facebook登錄彈出不關閉

登錄工作,因爲它後面的頁面顯示用戶信息,但彈出窗口只停留在那裏,而它應該自動關閉。在iOS7和iOS6上它關閉。在桌面瀏覽器上,它也會關閉。

我測試了一些其他隨機網站(例如brainfall.com)使用FB.login():同樣的事情。

有沒有人有解決這個問題?

任何幫助非常感謝!

+1

發生在我身上,好像只是另一個ios8錯誤。你可能想要回到服務器端身份驗證,如這裏所說http://stackoverflow.com/a/26052127/2880184 – 2014-10-05 18:56:01

+0

謝謝,工程很好,並不像它在dekstop上那樣糟糕。 – binoculars 2014-10-06 13:15:46

回答

1

檢查: fb_window_redirect

覆蓋德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'}); 
...