網頁版微信剛推出時,無數人被它的登錄方式驚艷了一下,不需要輸入用戶名密碼,打開手機微信掃一掃,便自動登錄。從原理上講,二維碼只能是一段文本的編碼,如何用它實現快捷登錄的呢?
簡易版(不涉及具體技術)
打開微信網頁版,會出現一個二維碼,用非微信的掃碼工具掃碼,你會發現此二維碼解析出來是類似如下的網址:
https://login.weixin.qq.com/l/obsbQ-Dzag==
接下來詳細介紹一下掃碼登錄具體的每個步驟:
①:用戶 A 訪問微信網頁版,微信服務器為這個會話生成一個全局唯一的 ID,上面的 URL 中 obsbQ-Dzag==
就是這個 ID,此時系統並不知道訪問者是誰(所以不存在UID(user ID),只是一個隨機的字母和數字組合)。
②:用戶A打開自己的手機微信並掃描這個二維碼,並提示用戶是否確認登錄。
③:手機上的微信是登錄狀態,用戶點擊確認登錄后,手機上的微信客戶端將微信賬號和這個掃描得到的 ID 一起提交到服務器
④:服務器將這個 ID 和用戶 A 的微信號(也有可能是token,反正是能標識用戶的信息)綁定在一起,並通知網頁版微信,這個 ID 對應的微信號為用戶 A,網頁版微信加載用戶 A 的微信信息,至此,掃碼登錄全部流程完成
掃碼登錄看起來神奇,主要是因為微信 APP 掃自家的碼會做一些普通二維碼軟件不會做的額外的操作,那就是將當前已登錄的微信和掃出來的 ID 提交到微信服務器,似的應用還有掃碼支付、掃碼加公眾號等功能
理論上③之后網頁版可以直接登錄,但是現在一般還有個確認過程。這可以避免一種情況:別人打開微信網頁版,並將二維碼發給你,由於你並不知道這是什么二維碼就不小心掃了,如果沒有確認過程,你的微信就直接登錄到別人的電腦上了。
因為這是基於一個信任來登陸的:即服務器相信能用微信掃碼的話,掃碼人就擁有這個微信賬號的所有權。微信在首屏也提供了從手機上退出網頁登陸的功能,這樣即使是別人拿着你的手機掃了碼在他的電腦上登陸你的微信,你也可以發現。
參考鏈接:
1. https://www.jianshu.com/p/7f072ac61763