web 掃碼登錄實(shí)現(xiàn)
基于 workerman做了一個(gè)掃碼登錄示例,給有需要的朋友參考一下。發(fā)現(xiàn)問(wèn)題,歡迎指正。
實(shí)現(xiàn)流程圖
運(yùn)行流程
①:用戶 A 訪問(wèn)微信網(wǎng)頁(yè)版,微信服務(wù)器為這個(gè)會(huì)話生成一個(gè)全局唯一的 ID,上面的 URL 中 obsbQ-Dzag== 就是這個(gè) ID,此時(shí)系統(tǒng)并不知道訪問(wèn)者是誰(shuí)。
②:用戶A打開(kāi)自己的手機(jī)微信并掃描這個(gè)二維碼,并提示用戶是否確認(rèn)登錄。
③:手機(jī)上的微信是登錄狀態(tài),用戶點(diǎn)擊確認(rèn)登錄后,手機(jī)上的微信客戶端將微信賬號(hào)和這個(gè)掃描得到的 ID 一起提交到服務(wù)器
④:服務(wù)器將這個(gè) ID 和用戶 A 的微信號(hào)綁定在一起,并通知網(wǎng)頁(yè)版微信,這個(gè) ID 對(duì)應(yīng)的微信號(hào)為用戶 A,網(wǎng)頁(yè)版微信加載用戶 A 的微信信息,至此,掃碼登錄全部流程完成。
掃碼登錄看起來(lái)神奇,主要是因?yàn)槲⑿?APP 掃自家的碼會(huì)做一些普通二維碼軟件不會(huì)做的額外的操作,那就是將當(dāng)前已登錄的微信和掃出來(lái)的 ID 提交到微信服務(wù)器,類似的應(yīng)用還有掃碼支付、掃碼加公眾號(hào)等功能。
以上內(nèi)容來(lái)自互聯(lián)網(wǎng)。
說(shuō)明
基于workerman/gateway 框架編寫(xiě). web服務(wù)也可以使用 apache, nginx來(lái)代替。掃碼工具我用的手機(jī)掃碼來(lái)代替的,也可直接獲取到一個(gè)url,放到另一個(gè)瀏覽器窗口模擬掃描二維碼的過(guò)程。生產(chǎn)環(huán)境肯定是用app掃描的。
獲取示例源碼
https://github.com/wanglelecc/workerman-qrcode-login-for-win
運(yùn)行示例(Win)
在windows 下雙擊 login_start_for_win.bat 即可
放1張預(yù)覽圖:
注:這只是一個(gè)示例,給大家提供一個(gè)思路。真正的使用,還有很多需要改進(jìn)的地方。