淺談微信掃碼登錄的原理
前言
大家好,我是程序員阿木!
網(wǎng)頁(yè)版微信剛推出時(shí),無(wú)數(shù)人被它的登錄方式驚艷了一下,不需要輸入用戶(hù)名密碼,打開(kāi)手機(jī)微信掃一掃,便自動(dòng)登錄。

微信掃碼登錄
如今,只要同時(shí)支持PC端與移動(dòng)端的應(yīng)用,均支持手機(jī)App掃碼登錄,像淘寶,12306等。從原理上講,二維碼只是一段文本的編碼,那么它是如何實(shí)現(xiàn)快捷登錄的呢?今天我們就來(lái)簡(jiǎn)單分析一下!
正文
如果你用我查查、支付寶、新浪微博等軟件掃碼二維碼,你會(huì)發(fā)現(xiàn)此二維碼解析出來(lái)是如下的網(wǎng)址:
https://login.weixin.qq.com/l/obsbQ-Dzdg==
接下來(lái)詳細(xì)介紹一下掃碼登錄具體的每個(gè)步驟:

微信掃碼登錄原理
如圖:
- 用戶(hù) A 訪(fǎng)問(wèn)微信網(wǎng)頁(yè)版,微信服務(wù)器為這個(gè)會(huì)話(huà)生成一個(gè)全局唯一的 ID,上面的 URL 中 obsbQ-Dzdg== 就是這個(gè) ID,但是此時(shí)系統(tǒng)并不知道訪(fǎng)問(wèn)者是誰(shuí)。
- 用戶(hù)A打開(kāi)自己的手機(jī)微信并掃描這個(gè)二維碼,并提示用戶(hù)是否確認(rèn)登錄。
- 手機(jī)上的微信是登錄狀態(tài),用戶(hù)點(diǎn)擊確認(rèn)登錄后,手機(jī)上的微信客戶(hù)端將微信賬號(hào)和這個(gè)掃描得到的 ID 一起提交到服務(wù)器
- 服務(wù)器將這個(gè) ID 和用戶(hù) A 的微信號(hào)綁定在一起,并通知網(wǎng)頁(yè)版微信,這個(gè) ID 對(duì)應(yīng)的微信號(hào)為用戶(hù) A,網(wǎng)頁(yè)版微信加載用戶(hù) A 的微信信息,至此,掃碼登錄全部流程完成
至于服務(wù)端如何通知網(wǎng)頁(yè)版的微信,無(wú)非兩種方式:
如果是CS的應(yīng)用,則客戶(hù)端使用輪詢(xún)的方式去詢(xún)問(wèn)服務(wù)器是否登錄成功
- 如果是BS的應(yīng)用,則服務(wù)端可以通過(guò)CallBack回調(diào)的方式來(lái)告知客戶(hù)端登錄成功。
掃碼登錄看起來(lái)神奇,主要是因?yàn)槲⑿?APP 掃自家的碼會(huì)做一些普通二維碼軟件不會(huì)做的額外的操作,那就是將當(dāng)前已登錄的微信和掃出來(lái)的 ID 提交到微信服務(wù)器,類(lèi)似的應(yīng)用還有掃碼支付、掃碼加公眾號(hào)等功能.
結(jié)語(yǔ)
以上便是掃碼登錄的原理,你弄明白了嗎?