
API貨幣化的最佳實(shí)踐:定價(jià)、打包和計(jì)費(fèi)
????此時(shí)用戶只需使用微信(微信已經(jīng)是登錄狀態(tài)的,不然是掃描不了的)掃一下圖中的二維碼,隨后手機(jī)上就出現(xiàn)了讓用戶點(diǎn)擊確認(rèn)登錄的按鈕,當(dāng)用戶點(diǎn)擊確認(rèn)之后就會(huì)自動(dòng)登錄到應(yīng)用。整個(gè)流程如下圖所示:
那么手機(jī)掃碼登錄是如何實(shí)現(xiàn)的呢?下面分析手機(jī)掃碼登錄的原理。
1、手機(jī)登錄和PC登錄的原理
1.1 手機(jī)登錄原理
(a)用戶在手機(jī)客戶端上輸入賬號(hào)和密碼并且攜帶設(shè)備信息一起請(qǐng)求服務(wù)器
(b)服務(wù)器接收到請(qǐng)求后,驗(yàn)證用戶的賬號(hào)和密碼是否正確,如果不正確則給予異常的提示;如果正確就生成token給客戶端
(c)手機(jī)客戶端通過(guò)攜帶token和設(shè)備的信息的方式請(qǐng)求服務(wù)器,服務(wù)器驗(yàn)證token是否有效,token有效的情況下驗(yàn)證是否為之前申請(qǐng)登錄的客戶端設(shè)備,如果不是之前申請(qǐng)登錄的設(shè)備也不允許訪問(wèn)服務(wù)器
手機(jī)登錄中需要攜帶設(shè)備的信息是為了防止token泄露后,攻擊者使用其他的設(shè)備攜帶當(dāng)前的token訪問(wèn)服務(wù)器資源。
1.2 PC登錄原理
(a)PC端輸入賬號(hào)和密碼請(qǐng)求登錄服務(wù)器
(b)服務(wù)器接收到請(qǐng)求后,驗(yàn)證用戶的賬號(hào)和密碼是否正確,如果不正確則給予異常的提示;如果正確就生成token給客戶端
(c)PC端攜帶token請(qǐng)求訪問(wèn)服務(wù)器,服務(wù)器驗(yàn)證token是否有效,token有效可以處理請(qǐng)求并返回響應(yīng)
2、手機(jī)掃碼登錄的原理
????了解了手機(jī)登錄和PC端登錄的原理后,理解手機(jī)掃碼登錄的原理就很簡(jiǎn)單了,手機(jī)掃碼登錄的實(shí)質(zhì)是通過(guò)已經(jīng)在APP上登錄的用戶幫助PC端的應(yīng)用到服務(wù)器上申請(qǐng)pc-token,拿到pc-token后就和PC端登錄服務(wù)器的原理一樣了。手機(jī)掃碼登錄的完整流程如下:
2.1 生成二維碼
用戶打開PC端的應(yīng)用后PC端會(huì)向服務(wù)器申請(qǐng)二維碼id,服務(wù)器此時(shí)會(huì)生成一個(gè)唯一的二維碼id,然后服務(wù)器將二維碼id、二維碼過(guò)期時(shí)間等信息存放Redis中并且返回二維碼id給PC端。
PC端獲取到二維碼id后利用其生成一個(gè)用戶可掃描的二維碼,當(dāng)然PC端需要監(jiān)聽到二維碼的狀態(tài)變更信息(服務(wù)器上對(duì)二維碼的變更操作需要實(shí)時(shí)的通知PC端)。
2.2?用戶掃描二維碼
生成二維碼之后,用戶使用手機(jī)上已登錄的APP掃描這個(gè)二維碼,掃描后會(huì)發(fā)送一個(gè)攜帶手機(jī)token、設(shè)備信息和二維碼id的請(qǐng)求訪問(wèn)服務(wù)器。
當(dāng)服務(wù)器接收到登錄請(qǐng)求后會(huì)驗(yàn)證手機(jī)token的有效性,如果手機(jī)token是有效的并且token也是當(dāng)前的設(shè)備申請(qǐng)的,此時(shí)服務(wù)器會(huì)生成一個(gè)臨時(shí)的token并修改二維碼的狀態(tài)為等待用戶確認(rèn)登錄的狀態(tài),然后返回token信息給手機(jī)客戶端,手機(jī)客戶端此時(shí)會(huì)彈出用戶確認(rèn)的按鈕。與其同時(shí)服務(wù)器會(huì)通知客戶端當(dāng)前的二維碼狀態(tài)處于等待用戶確認(rèn)登錄的狀態(tài)。
2.3?用戶手機(jī)上確認(rèn)登錄
用戶在手機(jī)上點(diǎn)擊確認(rèn)登錄后會(huì)發(fā)送一個(gè)攜帶臨時(shí)token的請(qǐng)求到服務(wù)器上,服務(wù)器驗(yàn)證臨時(shí)token是否有效,如果臨時(shí)token是有效的,服務(wù)器就會(huì)生成一個(gè)pc-token以及修改二維碼的狀態(tài)為登錄狀態(tài)的一系列操作。服務(wù)器將pc-token和二維碼狀態(tài)等信息緩存到Redis中,然后服務(wù)器還要推送pc-token和二維碼變更信息到PC端,PC端感知到二維碼狀態(tài)變更之后就隱藏二維碼和跳轉(zhuǎn)到主頁(yè)中。
通過(guò)以上的步驟就是實(shí)現(xiàn)了一套完整的手機(jī)掃碼登錄流程,在這個(gè)過(guò)程中每次的二維碼信息變更都是服務(wù)器推送給PC客戶端的,那么服務(wù)器如何做到推送數(shù)據(jù)給PC客戶端呢?這里實(shí)現(xiàn)服務(wù)器和客戶端通信的方案有很多種,如常見有WebSocket、SSE和客戶端輪詢等方案,龍蝦之前也有過(guò)分享服務(wù)端和客戶端實(shí)時(shí)通信的文章,有興趣的朋友可以點(diǎn)擊看下
總結(jié):
(1)手機(jī)掃碼登錄中二維碼的狀態(tài)變更涉及到服務(wù)器和客戶端之間的通信問(wèn)題,有多種實(shí)現(xiàn)方案
(2)手機(jī)掃碼登錄中核心是已在APP上登錄的用戶使用APP幫助PC客戶端拿到服務(wù)器頒發(fā)的pc-token來(lái)實(shí)現(xiàn)PC端的登錄
原文轉(zhuǎn)自 微信公眾號(hào)@龍蝦編程
API貨幣化的最佳實(shí)踐:定價(jià)、打包和計(jì)費(fèi)
應(yīng)用程序開發(fā)中不可或缺的開放API
開發(fā)者生產(chǎn)力提升的API終極指南
制定藍(lán)圖:什么樣的API策略能夠確保未來(lái)的成功?
詳解API:應(yīng)用程序編程接口終極指南
精通API規(guī)范:構(gòu)建明確指導(dǎo)和預(yù)期的指南
API 優(yōu)先方法如何徹底改變軟件開發(fā)
掌握良好的 API 設(shè)計(jì)原則:是什么、為什么和怎么辦
API-first產(chǎn)品經(jīng)理的熱門 API 工具和 API 指標(biāo)
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)