一、時(shí)序圖

掃碼登錄
- 打開登錄頁面,展示一個(gè)二維碼,同時(shí)輪詢二維碼狀態(tài)(web)
- 打開APP掃描該二維碼后,APP顯示確認(rèn)、取消按鈕(app)
- 登錄頁面展示被掃描的用戶頭像等信息(web)
- 用戶在APP上點(diǎn)擊確認(rèn)登錄(app)
- 登錄頁面從輪詢二維碼狀態(tài)得知用戶已確認(rèn)登錄,并獲取到登錄憑證(web)
- 頁面登錄成功,并進(jìn)入主應(yīng)用程序頁面(web)
整個(gè)過程中,一張?zhí)囟ǘS碼起到了連接請(qǐng)求登錄方和已登錄方橋梁的作用。而二維碼本質(zhì)上就是通過某種約定的編碼方式將一段文本信息轉(zhuǎn)換為一個(gè)能夠被解碼識(shí)別的圖片,其本質(zhì)就是一段文本信息。所以,我們可以將二維碼 ID、創(chuàng)建時(shí)間、過期時(shí)間等信息寫入二維碼,APP 終端通過解碼二維碼信息(這是終端媒介具備的基礎(chǔ)功能),就能夠識(shí)別出此二維碼。
在 Web 端,一般會(huì)有一個(gè)請(qǐng)求生成二維碼的接口,此接口會(huì)返回二維碼 ID 和二維碼連接,ID 用于查詢二維碼最新狀態(tài),鏈接用于展示。
這樣,Web 端和 APP 端就建立起了一個(gè)共識(shí):二維碼 ID。APP 端通過授權(quán)修改二維碼狀態(tài),Web 端能通過輪詢監(jiān)聽到二維碼狀態(tài)變化,并獲取到登錄憑證,從而完成登錄。