模擬微信掃碼登錄過程

網(wǎng)站應(yīng)用微信登錄是基于OAuth2.0協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信OAuth2.0授權(quán)登錄系統(tǒng)。

一個(gè)網(wǎng)站在進(jìn)行微信OAuth2.0授權(quán)登錄接入之前,應(yīng)該先到微信開放平臺(tái)注冊(cè)開發(fā)者帳號(hào),申請(qǐng)并獲得相應(yīng)的AppID和AppSecret,之后可開始接入流程。

寫這篇文章的目的不是為了講解如何搭建一個(gè)使用微信授權(quán)登錄的網(wǎng)站,而是為了講解如何在一臺(tái)沒有界面的linux系統(tǒng)上模擬微信掃碼登錄。

以登錄簡(jiǎn)書為例

  1. 點(diǎn)擊網(wǎng)站微信登陸圖標(biāo),打開一個(gè)二維碼頁面,url如下所示

    https://open.weixin.qq.com/connect/qrconnect?appid=wxe9199d568fe57fdd&client_id=wxe9199d568fe57fdd&redirect_uri=http%3A%2F%2Fwww.itdecent.cn%2Fusers%2Fauth%2Fwechat%2Fcallback&response_type=code&scope=snsapi_login&state=%257B%257D#wechat_redirect
    

    這個(gè)url包含主要的三個(gè)參數(shù)appid、client_id、redirect_uri,在此我們不需要太多關(guān)注,每個(gè)網(wǎng)站這些參數(shù)都是固定的。

    程序需要模擬瀏覽器請(qǐng)求這個(gè)url

  2. 解析二維碼url、獲取授權(quán)碼的url
    在第1步驟的response中找到以下兩個(gè)內(nèi)容:

    <div class="wrp_code"><img class="qrcode lightBorder" src="/connect/qrcode/001F82OszFAzElbp"></div>
    
    <script>
         // @cunjin 下面的變量是給開發(fā)者工具用的,inline到html里面,一定不能刪掉
         var fordevtool = "https://long.open.weixin.qq.com/connect/l/qrconnect?uuid=081KWIzIzrcRYwFs"
         console.log('devtool use', fordevtool)
     </script>
    
  3. 下載二維碼,并在規(guī)定的時(shí)間內(nèi)使用微信掃描,這一步需要人工完成。

  4. 掃描完成之后,訪問第2步驟fordevtool標(biāo)識(shí)的地址,獲取授權(quán)碼。

    獲取到的結(jié)果是一個(gè)json, 大致形如{errcode:405, wx_code:yyyyyyy},當(dāng)errcode為405時(shí)表示成功,此時(shí)wx_code有效,這就是我們要的授權(quán)碼。

  5. 帶著獲取到的授權(quán)碼登錄網(wǎng)站,獲取cookie,并保存在文件中。

    簡(jiǎn)書登錄地址大致為

    http://www.itdecent.cn/users/auth/wechat/callback?code=xxxxxxx&state=7B7D"
    

    獲取到授權(quán)碼,訪問這個(gè)把授權(quán)碼填入到這個(gè)地址中,state在第1步驟的url的state保持一致。

    訪問成功后,獲取到cookie,登錄完成。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容