LZ主要想問前端怎麼做吧?作為一個寫背景的,對背景的處理你應該比較熟悉了,我就不多說了。
前端主要在于兩點:
要保證打開的視窗可控(可以關閉)
要能收到授權成功的通知/事件
第一點而言,很簡單 window.open() 打開視窗的時候函數傳回值保留下來。請參考 window.open on MDN.
而第二點,就需要前背景合作了,一般可以通過輪詢、長連接配接拉取、EventSource甚至WebSocket等方式來搞。由于登入功能不是一個長時間跑的業務,一般輪詢就可以了。
前端僞代碼:
$('#QQ登入按鈕ID').on('click', function(){
// 打開小窗,讓使用者登入,并保留視窗對象以備關閉
var authWin = window.open('你的授權的頁面URL', '_blank', 'width=600,height=400,menubar=no,toolbar=no,location=no')
// 輪詢是否授權成功,授權成功後關閉小窗,并重新整理頁面
var timerId = setInterval(function(){
$.getJSON("你的授權是否成功的輪詢位址?相關參數", function(response){
if (response.授權成功){
clearInterval(timerId)
authWin.close()
window.location.reload()
}
})
}, 500)
})