在日常開(kāi)發(fā)中越來(lái)越多的使用到微信開(kāi)放平臺(tái)的OAuth授權(quán)認(rèn)證實(shí)現(xiàn)登錄邏輯,這樣即能快速的開(kāi)發(fā)分扎,又能依托于微信帝國(guó)的強(qiáng)大用戶(hù)量來(lái)實(shí)現(xiàn)用戶(hù)轉(zhuǎn)化。但是從網(wǎng)站方出發(fā)點(diǎn)看畏吓,我們可以做更多事情,更好與用戶(hù)進(jìn)行交互肾砂,以便更高效的轉(zhuǎn)化用戶(hù)宏悦。
微信開(kāi)放平臺(tái)登錄
傳統(tǒng)的微信開(kāi)放平臺(tái)登錄的流程為:
- 掃描二維碼
- 在手機(jī)端微信確認(rèn)登錄
- 接收到微信消息提醒
就是這個(gè)第三步對(duì)于我們是在是沒(méi)什么用處,如果這里收到的是我們定制的一些信息那就太棒了饼煞,比如說(shuō)登錄成功后用戶(hù)接收到一些網(wǎng)站方的推廣信息。
微信公眾號(hào)平臺(tái)登錄
下面我們就利用公眾號(hào)平臺(tái)的網(wǎng)頁(yè)授權(quán)機(jī)制來(lái)實(shí)現(xiàn)登錄功能:
如果用戶(hù)在微信客戶(hù)端中訪問(wèn)第三方網(wǎng)頁(yè)息堂,公眾號(hào)可以通過(guò)微信網(wǎng)頁(yè)授權(quán)機(jī)制,來(lái)獲取用戶(hù)基本信息储矩,進(jìn)而實(shí)現(xiàn)業(yè)務(wù)邏輯褂乍。
- 分配登錄二維碼:
因?yàn)槲⑿啪W(wǎng)頁(yè)授權(quán)是沒(méi)有二維碼掃描的步驟的,所以二維碼要自己生成逃片。又因?yàn)橹凰郑麄€(gè)登錄流程中涉及的到三方設(shè)備(Server呀狼、手機(jī)、web)哥艇,導(dǎo)致session無(wú)法得到共享,所以要分配身份標(biāo)識(shí)(本例中使用uuid)貌踏。 - web 端進(jìn)行長(zhǎng)輪詢(xún)
當(dāng)手機(jī)進(jìn)行掃碼動(dòng)作時(shí),導(dǎo)致web端的進(jìn)程中斷逗堵,服務(wù)端無(wú)法通知瀏覽器登錄狀態(tài),所以web端瀏覽器要和Server端保持長(zhǎng)連接(推薦使用websocket)進(jìn)行通訊蜒秤。 - 手機(jī)端微信掃碼
- 手機(jī)微信內(nèi)顯示登錄成功后的網(wǎng)頁(yè)
這四步中其實(shí)主要問(wèn)題就在于如何進(jìn)行手機(jī)和web的session映射亚斋,進(jìn)而使用長(zhǎng)連接通知瀏覽器登錄狀態(tài)。當(dāng)?shù)卿洺晒笊》茫覀兛梢宰灾鞯南蛴脩?hù)推送我們想要用戶(hù)看到的頁(yè)面轰驳。