【問題解決】Auth 2.0 登入成功回撥方法
絮絮叨
第三方的登入的解決方案通常有兩種方式,一是開啟一個新的標籤頁,然後登入回調回來; 二是通過父視窗開啟一個子窗體去第三方登入,登陸成功時關掉子窗體回到父視窗。
問題來了
我的父窗體怎麼樣才知道子窗體被關閉了呢?
查了下 w3c 裡面的文件,貌似並沒有類似 onWindowClose 這樣的回撥函式。
解決方案
將開啟的這個視窗物件賦值給一個 jQuery 物件,在主窗體裡輪詢判斷該物件的狀態
1.開啟第三方登入視窗
var windowObj = null;
windowObj = window.open("https://graph.qq.com/oauth/show?which=Login&client_id=1000001&redirect_uri=http://127.0.0.1:3000/login/qq_after_login" , "q",'width=800,height=500');
2.在子窗體中登入成功時執行關閉自己的方法
self.close();
3.然後在主窗體裡面輪詢執行
var loop = setInterval(function() {
if(windowObj != null && windowObj.closed) {
clearInterval(loop);
//do something 在這裡執行回撥
}
}, 800);