首頁  >  文章  >  微信小程式  >  自訂微信登入掃碼樣式解決方法

自訂微信登入掃碼樣式解決方法

小云云
小云云原創
2017-12-08 14:38:564018瀏覽

PC微信掃碼登入

近期做一個PC端微信掃碼登入的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內嵌入產品網頁。本次以內嵌二維碼為例,具體怎樣在頁面中顯示一個登陸二維碼,文檔說的很清楚,就不贅述了。

解決自訂微信二維碼樣式問題

#當一切準備妥當之後,網頁上的二維碼初始預設是這個樣子。
自訂微信登入掃碼樣式解決方法

特別大不說(預設二維碼大小280x280),還有微信登入的title,下方也有掃碼登入的提示。
幸運的是,微信留了一個api給我們自訂樣式的機會,在之前實例化一個二維碼的時候,實例物件中href屬性,允許設定樣式。

<span style="font-size: 16px;"> var obj = new WxLogin({<br>                        id:"login_container", <br>                        appid: "", <br>                        scope: "", <br>                        redirect_uri: "",<br>                        state: "",<br>                        style: "",<br>                        href: "../qrcode.css"//就是这个属性<br>                       });<br></span>

很不幸的是,在href中傳入樣式檔案的位址,會報錯。貌似微信為了安全考慮,只允許存取https的資源。於是現在採用第二種解決方法data-url。

透過存取data-url解決樣式問題

#寫一個nodejs,腳本將剛才的css資源轉換為data-url。具體程式碼實作為:

<span style="font-size: 16px;">var fs = require('fs');<br><br>// function to encode file data to base64 encoded string<br>function base64_encode(file) {<br>    // read binary data<br>    var bitmap = fs.readFileSync(file);<br>    // convert binary data to base64 encoded string<br>    return 'data:text/css;base64,'+new Buffer(bitmap).toString('base64');<br>}<br><br>console.log(base64_encode('./qrcode.css'))<br></span>

執行node腳本,複製列印出來的data-url,然後賦值給剛才的href。
自訂微信登入掃碼樣式解決方法

<span style="font-size: 16px;"> var obj = new WxLogin({<br>                        id:"login_container", <br>                        appid: "", <br>                        scope: "", <br>                        redirect_uri: "",<br>                        state: "",<br>                        style: "",<br>                                           href:"data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30NCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7d2lkdGg6IDIwMHB4O30NCi5zdGF0dXNfaWNvbiB7ZGlzcGxheTpub25lf<br>Q0KLmltcG93ZXJCb3ggLnN0YXR1cyB7dGV4dC1hbGlnbjogY2VudGVyO30="//data-url<br>                       });<br></span>

注意這裡的MIME類型,一定要回傳text/css。
自訂二維碼:
自訂微信登入掃碼樣式解決方法

相關教學:

微信登入的一些新得

php二維碼的生產以及下載方法

#javascript產生二維碼的兩種方法

以上是自訂微信登入掃碼樣式解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn