隨著移動互聯(lián)網(wǎng)的普及,智能手機(jī)的使用頻率非常高,通過手機(jī)掃碼實現(xiàn)網(wǎng)站登錄的場景應(yīng)用非常多,本文介紹如何同微信公眾號的對接開發(fā),而不是微信開放平臺,實現(xiàn)手機(jī)微信掃碼登錄。
集成開發(fā)平臺流程
集成微信登錄的時候,一般情況下的操作流程如下:
1、先到微信開放平臺申請開發(fā)者賬號;
2、賬號申請成功之后,將PC網(wǎng)站的域名和網(wǎng)站的簡介以及備案號等信息提交到開放平臺審核;
3、審核通過之后,分配Appid和Secret值,根據(jù)獲取的開發(fā)者權(quán)限做集成對接。
集成開發(fā)的局限性
這其中的局限性,主要還是來自微信開放平臺的審核,以及對接開發(fā)的成本,具體如下:
1、網(wǎng)站沒有備案號。有一些境外的網(wǎng)站以及一些外貿(mào)網(wǎng)站,需要集成Wechat登錄,但是想要申請開發(fā)者權(quán)限幾乎是不可行的。
2、從代碼維護(hù)的角度來說,既然已經(jīng)完成了微信公眾號的集成開發(fā),如果再維護(hù)一套開放平臺的對接代碼,既容易出bug,也不利于降低維護(hù)成本。
公眾號掃碼登錄對接條件
繞過開放平臺,做微信掃碼的集成登錄,需要具備以下條件:
1、有認(rèn)證過的微信公眾號,而且必須是認(rèn)證服務(wù)號。這是因為只有服務(wù)號才可以生成帶參數(shù)的臨時二維碼。通過帶參二維碼可以實現(xiàn)識別每次掃碼的唯一性,因為是臨時二維碼,可以設(shè)置5分鐘,10分鐘或者30分鐘后過期,這樣也不會占用帶參二維碼的數(shù)量資源。
2、另一個需要的技術(shù)準(zhǔn)備是Web Socket服務(wù)器。為什么需要這個呢?這是為了能夠?qū)叽a的結(jié)果即時顯示在PC網(wǎng)頁端。如果沒有Web Socket服務(wù)器,也可以通過JavaScript發(fā)送Ajax請求輪詢查詢來實現(xiàn)頁面的刷新,頻率比如間隔1~3秒。這樣做的缺點在于,既浪費(fèi)用戶瀏覽器的資源,又浪費(fèi)服務(wù)器的資源,同時還占用網(wǎng)絡(luò)帶寬。
掃碼登錄的處理過程
通過下面這張圖,我們來展示一下PC端掃碼登錄的處理過程。
這是一張完整的掃碼登錄過程的流程圖,不僅僅適用于說明手機(jī)微信掃碼登錄過程,通過其他手機(jī)APP去做掃碼開發(fā)同樣可以參考和使用。
實操:用戶PC瀏覽器端的處理
PC的網(wǎng)頁被打開后,首先顯示唯一的二維碼,同時,瀏覽器與Web Socket服務(wù)器建立連接,然后打開Socket的偵聽模式,等待掃碼事件被推送過來。
微信掃碼登錄的 PC端(瀏覽器端)的處理過程的代碼如下:
<script src="https://cdn.bootcss.com/socket.io/1.3.7/socket.io.js"></script> <script type="text/javascript"> $(function(){ //連接服務(wù)端,workerman.net:2120換成實際部署web-msg-sender服務(wù)的域名或者ip //var socket_io = io('http://www.yhowl.cn:8888'); var socket_io = io('http://www.yhowl.cn', {path: '/socketio/'}); // uid可以是自己網(wǎng)站的用戶id,以便針對uid推送以及統(tǒng)計在線人數(shù) uid = '{abot:$sessionid}'; // socket連接后以uid登錄 socket_io.on('connect', function(){ socket_io.emit('login', uid); console.log('login=====>>>>>', uid); }); // 后端推送來消息時 socket_io.on('new_msg', function(msg){ console.log('new_msg=====>>>>>', msg); var msg = JSON.parse(decodeURIComponent(msg)); //提示的文字 var result = msg.result; if(msg.code == 1){ /* 掃描二維碼成功通知顯示成功的文字 */ $("#yes_qrcode").show(); $("#click_result").text(result); }else if(msg.code == 2){ /* 點擊取消按鈕 */ $("#click_result").text(result); }else if(msg.code == 3){ /* 點擊成功按鈕 */ $("#click_result").text(result); //return; var supplier_login_data = msg.supplier_login_data; setTimeout(function(){ var new_url = "{abot::U('')}"; if(new_url.indexOf("?") != -1){ new_url = '&supplier_login_data='+supplier_login_data; } else{ new_url = '?supplier_login_data='+supplier_login_data; } location.href = new_url; }, 2000); } }); // 后端推送來在線數(shù)據(jù)時 socket_io.on('update_online_count', function(online_stat){ }); }); </script>
實操:用戶手機(jī)端(微信中)的處理
手機(jī)微信端掃碼成功之后,會跳轉(zhuǎn)到一個指定網(wǎng)頁,這分成兩種情況:
1、如果掃描的認(rèn)證服務(wù)號的帶參二維碼,會首先推送一條消息給微信粉絲,消息中包含這個指定網(wǎng)頁的鏈接,并提示粉絲點擊。
2、如果是自家的APP掃碼登錄,則可以直接跳轉(zhuǎn)到網(wǎng)頁。
//如果不是從APP掃碼過來的,提示去下載APP if ($this->_get('oneclicklogin') == '%oneclicklogin%'){ $jump_to_url = 'https://yanyubao.tseo.cn/app/?id=yanyudianshang'; $this->show_msg_to_mobile_ui('請使用延譽(yù)電商APP掃碼,點擊前去下載', $jump_to_url); return; } //如果到這里userid還是不存在,那么應(yīng)該是沒有 oneclicklogin 這個參數(shù),出現(xiàn)這種情況,是從微信中打開鏈接進(jìn)來的。 if($this->__userid == 0){ if($this->is_it_in_weixin_browser()){ $this->_is_user_login('請登錄后再掃碼進(jìn)入管理員后臺'); return; } else{ $jump_to_url = 'https://yanyubao.tseo.cn/app/?id=yanyudianshang'; $this->show_msg_to_mobile_ui('請使用延譽(yù)電商APP掃碼,點擊前去下載', $jump_to_url); } return; }
掃碼登錄實例
掃碼登錄過程實例如下圖。
最近更新
- 網(wǎng)站轉(zhuǎn)APP,WordPress轉(zhuǎn)小程序,安卓蘋果微信百度支付寶抖音全平臺小程序
- 小程序和APP在線開發(fā)制作說明:超過100個設(shè)置選項自動生成企業(yè)官網(wǎng)/商城網(wǎng)站/拼團(tuán)秒殺分銷/智能建站2.0
- DeepSeek能用來做小程序嗎?答案都在這兒!
- 延譽(yù)小工單軟件產(chǎn)品介紹和使用幫助
- 物聯(lián)網(wǎng)的底層通信與應(yīng)用案例深度剖析
- 企業(yè)網(wǎng)站與商城 APP 開發(fā):AI 助力有限,程序員地位難撼
- 電腦端登錄忘記密碼怎么辦?
- 國際版進(jìn)銷存軟件:不容忽視的多重弊端
- 獨(dú)立站熱度不減,谷歌百度排名依然堅挺
- 獨(dú)立站技術(shù)方案:WordPress三合一企業(yè)網(wǎng)站建設(shè)
猜你喜歡
- 移動互聯(lián)網(wǎng)產(chǎn)品設(shè)計:咋不按套路出牌?
- 微信公眾號怎么快速注冊并認(rèn)證小程序?
- 規(guī)則決定生死,你的微信分銷系統(tǒng)如何脫穎而出?
- 支付寶掃碼點餐2.0:獎勵金額上不封頂,這個方法助你提高“薅羊毛”效率
- 微信支付:收款功能被限制,不要慌!
- 基于百度文心大模型開發(fā)三個智能體
- 郵件群發(fā)借助“互聯(lián)網(wǎng)+”迅猛發(fā)展
- 延譽(yù)寶CMS(微讀客)制作的移動海報案例賞析
- 小程序項目開發(fā)實戰(zhàn):內(nèi)部培訓(xùn)課程大綱
- 延譽(yù)客戶關(guān)系管理軟件(CRM系統(tǒng))