|
事 情 經(jīng) 過 干點什么好呢?小A單手操作鼠標打開了一個陌生而隱秘的網(wǎng)站。正開著某個視頻起勁,突然瀏覽器彈出了一個對話框:
這... 但是由于強烈的好奇驅(qū)使,迫于無奈,小A只好選擇登錄再繼續(xù)觀看。只見他熟練的掏出手機,打開微信掃一掃對準上面的二維碼,只聽見 “?!?的一聲,網(wǎng)頁上的二維碼放佛活過來了,直接刷新出了小A的微信頭像,同時手機上也彈出登錄的提醒。 小A心中略微驚嘆,但沒來得及多想。忙點擊手機界面中登錄按鈕。此時網(wǎng)頁刷新,恢復了正常,表示可以繼續(xù)觀看。 上網(wǎng)沖浪的時間總是過得很快,小A很快就有些疲倦。他閉上眼睛,腦海中卻浮現(xiàn)出了剛剛微信掃描二維碼,然后登錄網(wǎng)頁的場景,心中再次驚嘆,并開始思考起其中的原理來。 原理解析 微信掃碼登錄現(xiàn)在在日常生活中已經(jīng)是常見不能再常見的場景之一了,但是要知道微信首次公開這項功能時,卻是驚艷眾人。移動端與PC端以這樣一種巧妙的方式鏈接在了一起,的確是讓人驚嘆。 小A想起來之前聽過的前后端的概念,知道賬戶的數(shù)據(jù)信息一般都是放在服務器上,前端負責向后端 “討要數(shù)據(jù)” 并顯示,后端則是對前端的 “討要” 做出反應。這樣一來,小A猜測微信登錄的過程可能就是:
還手腳麻利的畫了個示意圖: 當小A正準備沾沾自喜的時候,突然看到桌面上的手機。咦,如果就只是這么個過程,那手機的作用是啥。他才開始意識到,問題沒這么簡單。 于是,他決定重新探秘微信掃碼登錄的過程。 過程分析 小A打開了一個十分簡潔的網(wǎng)站,說是微信的網(wǎng)頁版,可以微信直接掃碼登錄。
小A看著網(wǎng)頁中碩大的二維碼陷入了沉思,他在想這個二維碼跟他的身份有沒有關系呢。如果沒有,那它又是怎么生成的呢。 思考間,小A打開了瀏覽器的開發(fā)者工具。在網(wǎng)絡監(jiān)控一覽找到了這幅二維碼,與之對應的鏈接是
然后習慣性地,小A嘗試多次刷新頁面,發(fā)現(xiàn)二維碼不斷發(fā)生變化,鏈接也不斷更改。
他似乎發(fā)現(xiàn)了些東西。二維碼不斷變化,其對應的鏈接尾的代碼也相應變化,并且是隨機性的變化。 這也就是說,每一次頁面刷新都會隨機且唯一地生成一個二維碼。這或許可以與手機登錄的過程聯(lián)系起來。 小A似乎開始明白了,他隨即再次拿起手機,熟練的使用微信掃描了此時的二維碼。 “?!?的一聲,網(wǎng)頁上的二維碼頓時變成了小A帥氣的微信頭像。這個時候,小A才突然意識到,是掃碼之后網(wǎng)頁才與他的微信賬號建立起了聯(lián)系。 沒有掃碼之前,頁面上的二維碼只是隨機生成的且與用戶無關的碼;而當用戶掃碼之后,二維碼便與用戶賬號綁定在了一起。 原來手機掃碼的用處是這樣! 小A此時注意到,手機微信上彈出了『微信登錄確認』的提醒。小A這個時候謹慎地點擊了下方的登錄按鈕。 隨著平滑的動畫一閃而過,網(wǎng)頁上已經(jīng)顯示出了小A的賬號信息,顯然小A的微信賬號已經(jīng)登錄。再一次體驗這個過程,小A心中開始思索手機微信在登錄過程中所起到的具體作用。 首先需要明白幾個過程:
原理解釋 小A望著上述過程,結合最開始的原理猜測,開始思索整個環(huán)節(jié)哪里出了差錯。
突然,他意識到,不同的網(wǎng)站可能都需要通過微信后臺進行數(shù)據(jù)的獲取,那么每一個網(wǎng)站必然也存在它的后臺來給微信后臺發(fā)送請求。 這樣一來,整個過程就能解釋得通了!
小A在想清楚了整個過程后,決定對整個過程的技術實現(xiàn)進行進一步的探究。他打開了微信開發(fā)官方文檔,找到了第三方網(wǎng)站應用微信登錄開發(fā)指南:
他將整個過程梳理了一遍,畫出了這個圖: 技術實現(xiàn)如下: 一、二維碼的獲得
二、微信客戶端授權登錄
三、網(wǎng)站后臺請求數(shù)據(jù)
在上述過程中,有幾個參數(shù)值得解釋一下:(來源官方文檔)
整個過程從網(wǎng)站后臺向微信開發(fā)平臺請求授權登錄開始,最終目的是為了獲得
在獲得了 研究到這,小A終于大體上對微信掃碼登錄的整個過程有了清晰的認知??雌饋硭坪跻膊浑y,開發(fā)者只需要在網(wǎng)頁后端做好對微信公眾平臺的接口調(diào)用即可實現(xiàn)掃碼登錄。 伸了伸懶腰,小A又想到在整個過程中還需要考慮超時的問題。比如二維碼超時未掃描、二維碼掃描后超時授權、獲得 揉了揉太陽穴,小A發(fā)現(xiàn)一個簡單的功能實現(xiàn)起來還是需要考慮許多細節(jié),真的是紙上得來終覺淺呀。小A下定決心,下次得少上網(wǎng)沖浪了,花點時間搭個服務器先把微信掃碼登錄過程實現(xiàn)看看。 不過,還得先去在微信開放平臺注冊開發(fā)者賬號,并擁有一個已審核通過的網(wǎng)站應用,并獲得相應的 想了想,還是先睡覺吧。 每天進步一點點 |
|
|