PC微信掃碼登錄
近期做一個PC端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內嵌入產品網頁。本次以內嵌二維碼為例,具體怎樣在頁面中顯示一個登陸二維碼,文檔說的很清楚,就不贅述了,
文檔地址:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
解決自定義微信二維碼樣式問題
當一切准備妥當之后,網頁上的二維碼初始默認是這個樣子。
特別大不說(默認二維碼大小280x280),還有微信登錄的title,下方也有掃碼登錄的提示。
幸運的是,微信留了一個api給我們自定義樣式的機會,在之前實例化一個二維碼的時候,實例對象中href屬性,允許設置樣式。
步驟1:在頁面中先引入如下JS文件(支持https):
http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js
步驟2:在需要使用微信登錄的地方實例以下JS對象:
var obj = new WxLogin({ self_redirect:true, id:"", appid: "", scope: "", redirect_uri: "", state: "", style: "", href: "" });
在附上參數說明:
不幸的是,在href中傳入樣式文件的地址,會報錯。貌似微信為了安全考慮,只允許訪問https的資源。於是現在采用第二種解決辦法傳 base64 。
將需要修改的樣式進行base64轉碼 在放進到 href 中
例如官方自己優化的(如需在進一步修改需要自己配置):
.impowerBox .qrcode {width: 200px;} .impowerBox .title {display: none;} .impowerBox .info {width: 200px;} .status_icon {display: none} .impowerBox .status {text-align: center;}
進行轉碼后再加入前綴:data:text/css;base64, 將轉碼后的Base64拼接到 data:text/css;base64, 這個后面,在放入到href中
額外需要注意的是 state 這個參數 需要填寫隨機碼!
var obj = new WxLogin({ self_redirect:false, id:"", appid: "", scope: "", redirect_uri: "", state: "Math.ceil(Math.random()*1000)", style: "black", href: "data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30KLmltcG93ZXJCb3ggLnRpdGxlIHtkaXNwbGF5OiBub25lO30KLmltcG93ZXJCb3ggLmluZm8ge3dpZHRoOiAyMTBweDt9Ci5pbXBvd2VyQm94IC5pY29uMzhfbXNnLnN1Y2Mge2Rpc3BsYXk6IG5vbmV9Ci5pbXBvd2VyQm94IC5pY29uMzhfbXNnLndhcm4ge2Rpc3BsYXk6IG5vbmV9Ci5pbXBvd2VyQm94IC5zdGF0dXMge3RleHQtYWxpZ246IGNlbnRlcjt9Cg==" });
結果展示: