Vue中企業(yè)微信掃碼登錄

企業(yè)微信掃碼登錄有兩種方式廊营,一種是構(gòu)建獨立窗口的二維碼歪泳,第二種是構(gòu)建內(nèi)嵌二維碼。我的項目中選第二種
二維碼構(gòu)造流程請查閱官方文檔

步驟一:引入JS文件

構(gòu)建內(nèi)嵌二維碼第一步就是引入官方的js 文件露筒,在需要展示企業(yè)微信網(wǎng)頁登錄二維碼的網(wǎng)站引入如下JS文件呐伞,(支持https):js地址,建議下載下來在本地使用慎式,我自己的項目使用的是vue-cli 3.xx 的伶氢,下載下來的js 放到項目目錄public下,然后在入口也引入

文件目錄
瘪吏。別忘了癣防,還需要配置一下webpack,在vue.config.js做如下配置:

configureWebpack: {
    externals: {
      'wxLogin': 'WwLogin'
    },
    resolve: {
      alias: {
        '@': resolve('src')
      }
    }
 }

這樣就可以全局訪問WxLogin這個方法了掌眠。當(dāng)然也可以直接在你需要的內(nèi)嵌二維碼的地方引入模塊 import WwLogin from your_path蕾盯。

步驟二:引入JS文件

在需要使用微信登錄的地方實例JS對象:

WwLogin({
   "id" : "二維碼容器的id",  
   "appid" : "",
   "agentid" : "",
   "redirect_uri" :"",
   "state" : "",
   "href" : "",
});

參數(shù)說明請請查閱官方文檔。困惑我最多的是這個 redirect_uri蓝丙,這個是授權(quán)回調(diào)地址级遭,他的作用就是當(dāng)你完成掃碼之后,微信官方會將掃碼結(jié)果返回的數(shù)據(jù)作為參數(shù)拼接到redirect_uri渺尘,并會自動跳轉(zhuǎn)redirect_uri 所指向的路由挫鸽。根據(jù)官網(wǎng)說明,redirect_uri 需要 使用 encodeURIComponent 編碼一下鸥跟。我的項目redirect_uri 指向當(dāng)前頁丢郊,因此這個參數(shù) 就應(yīng)該是redirect_uri: encodeURIComponent(window.location.href)。在vue項目中,我們就可以通過 watch 去監(jiān)聽路由變化枫匾,然后獲取路由中的 code參數(shù)(這個參數(shù)是后臺用來獲取企業(yè)微信用戶信息的必要參數(shù))迅诬,

$route: {
      handler: function(route) {
        const query = route.query;
        if (query) {
          this.redirect = query.redirect;
          this.otherQuery = this.getOtherQuery(query);
          if (this.otherQuery.code) {
            this.userWxLogin(this.otherQuery.code)
              .then(res => {
                this.loginSuccess();
                this.loginFailed = false;
              })
              .catch(err => {
                this.loginFailed = true;
              });
            //成功后刪除不必要的參數(shù)(state,code,appid 在其他頁面并不需要),保證路由是干凈的
            delete this.otherQuery.code;
            delete this.otherQuery.state;
            delete this.otherQuery.appid;
          }
        }
      },
      immediate: true
    }

整個登錄流程就結(jié)束了婿牍。
當(dāng)然了還有一個參數(shù)是href侈贷,是用來定義 二維碼樣式的.

.impowerBox .qrcode {width: 200px;}
.impowerBox .title {display: none;}
.impowerBox .info {width: 200px;}
.status_icon {display: none  !important}
.impowerBox .status {text-align: center;}

你可以專門做一個這個樣式文件,然后放到支持https協(xié)議的資源地址的服務(wù)器上等脂∏温或者轉(zhuǎn)成 base64 在線base64編碼,之后將編碼后的字符串傳遞給href 參數(shù)href:data:text/css;base64,編碼后的字符串

例子
上遥。

我們并不需要自己去判斷二維碼是否過期搏屑,微信自動會給你做判斷,如果過期二維碼區(qū)域會自動增加刷新按鈕粉楚,點擊就刷新二維碼了辣恋。要注意的是,先要在企業(yè)微信開通授權(quán)回調(diào)域名模软,這個域名應(yīng)該跟 redirect_uri 參數(shù)所在的域名一直伟骨,否則二維碼會獲取失敗。

失敗例子

加入 WwLogin 這個函數(shù)的參數(shù)不對燃异,也會在插入二維碼的區(qū)域中做提示携狭。如果參數(shù)全對,就會生成如下二維碼:

image.png

實際上回俐,不管是構(gòu)造獨立二維碼 還是 構(gòu)造內(nèi)嵌二維碼 原理是一樣的逛腿,內(nèi)嵌二維碼 實際上就是在指定容器中加載了一個 iframe。另外仅颇,一直好奇的是单默,為什么掃碼成功之后,在手機上點擊確認(rèn)登錄頁面就會自動跳轉(zhuǎn)到 redirect_uri 指定的路由呢忘瓦,當(dāng)我打開控制臺就發(fā)現(xiàn)搁廓,其實 引入的js文件中,會有一個 jsonp的輪詢政冻,以此來判斷二維碼的各個階段的狀態(tài)枚抵。然后再成功的狀態(tài)下給你跳轉(zhuǎn)到指定路由线欲。

由于配置回調(diào)域名不能是本地域名明场,所以在本地開發(fā)的時候做一個內(nèi)網(wǎng)穿透,可以使用natapp這個軟件李丰,免費的就行苦锨,傳送門

結(jié)束

整個過程就是這樣,沒有什么坑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舟舒,一起剝皮案震驚了整個濱河市拉庶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秃励,老刑警劉巖氏仗,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異夺鲜,居然都是意外死亡皆尔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門币励,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慷蠕,“玉大人,你說我怎么就攤上這事食呻×骺唬” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵仅胞,是天一觀的道長每辟。 經(jīng)常有香客問我,道長干旧,這世上最難降的妖魔是什么影兽? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮莱革,結(jié)果婚禮上峻堰,老公的妹妹穿的比我還像新娘。我一直安慰自己盅视,他們只是感情好捐名,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闹击,像睡著了一般镶蹋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赏半,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天贺归,我揣著相機與錄音,去河邊找鬼断箫。 笑死拂酣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仲义。 我是一名探鬼主播婶熬,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼剑勾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赵颅?” 一聲冷哼從身側(cè)響起虽另,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饺谬,沒想到半個月后捂刺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡募寨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年叠萍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪商。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡苛谷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出格郁,到底是詐尸還是另有隱情腹殿,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布例书,位于F島的核電站锣尉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏决采。R本人自食惡果不足惜自沧,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望树瞭。 院中可真熱鬧拇厢,春花似錦、人聲如沸晒喷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凉敲。三九已至衣盾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爷抓,已是汗流浹背势决。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蓝撇,地道東北人果复。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像唉地,于是被迫代替她去往敵國和親据悔。 傳聞我的和親對象是個殘疾皇子夺荒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345