微信小程序 wx.login解密出現(xiàn)亂碼的問題解決辦法
微信小程序 wx.login解密出現(xiàn)亂碼的問題解決辦法
最近在給公司開發(fā)微信小程序,需要用到微信登錄,根據(jù)文檔要求需要把獲取的用戶信息按照AES進(jìn)行解密。
我使用的是官方提供的PHP demo,拷貝到程序中,測試發(fā)現(xiàn),解密之后的數(shù)據(jù)前面有一串亂碼。
類似于這樣子的,前面一段是亂碼。
經(jīng)過仔細(xì)的檢查,發(fā)現(xiàn)官方的提供的demo中的帳號(hào)和機(jī)密之后的信息是可以解密的,這就說明解密代碼是沒有問題的。
后來查詢微信開發(fā)者社區(qū),找到好多解密失敗。其中一個(gè)回答說是因?yàn)槎啻握{(diào)用wx.login之后導(dǎo)致的問題。
終于看到解決方案,于是趕緊去看我的代碼??墒遣檎野胩彀l(fā)現(xiàn)只調(diào)用了一次,根本不是這個(gè)問題。
有一次走到了死胡同,沒辦法了,還是看代碼吧。
根據(jù)文檔,應(yīng)該是先調(diào)用wx.login(),成功之后再調(diào)用wx.getUserInfo(), 于是我就想,會(huì)不會(huì)是我把wx.getUserInfo()獲取到的值沒有正確的傳給服務(wù)器呢?
既然不確定,那就得看看。于是,打印wx.getUserInfo()的返回值,是這樣子的
看到結(jié)果之后我就跟我的請(qǐng)求服務(wù)器的參數(shù)挨個(gè)對(duì)照,當(dāng)看到encryptData時(shí),發(fā)現(xiàn)了問題,文檔上寫的是應(yīng)該把encryptedData的值用于解密,而我則是把encryptData的值
取出來了,所以解密結(jié)果就不正確了。
至此,發(fā)現(xiàn)問題,把參數(shù)改成encryptedData之后解密成功。
總結(jié)一下問題: 由于wx.getUserInfo()返回值中encryptData和encryptedData參數(shù)名稱過于相似,導(dǎo)致我用錯(cuò)變量,實(shí)在是不應(yīng)該。
至于為什么微信要多返回一個(gè)沒用的參數(shù)(目前還沒發(fā)現(xiàn)它的作用),我就不知到了,而且文檔上根本就沒提到這個(gè)。
希望大家編碼的時(shí)候能夠細(xì)心一點(diǎn),不要犯我這樣的錯(cuò)誤。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能(防止刷新倒計(jì)時(shí)失效)
這篇文章主要介紹了JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能防止刷新倒計(jì)時(shí)失效問題,在項(xiàng)目開發(fā)中經(jīng)常會(huì)用到此功能,下面小編通過本文給大家分享JS實(shí)現(xiàn)發(fā)送短信驗(yàn)證后按鈕倒計(jì)時(shí)功能(防止刷新倒計(jì)時(shí)失效),需要的朋友參考下吧2017-07-07JavaScript原型繼承之基礎(chǔ)機(jī)制分析
由于語言設(shè)計(jì)上的原因,JavaScript 沒有真正意義上“類”的概念。而通常使用的 new 命令實(shí)例化對(duì)象的方法,其實(shí)是對(duì)原型對(duì)象的實(shí)例化。2011-08-08JavaScript使用localStorage判斷設(shè)置值是否過期
本文主要介紹了JavaScript使用localStorage判斷設(shè)置值是否過期,通過設(shè)置過期時(shí)間,我們可以使用 setItemWithExpiration 函數(shù)將數(shù)據(jù)存儲(chǔ)到 localStorage 中,并使用 getItemWithExpiration 函數(shù)獲取數(shù)據(jù)并檢查是否過期,感興趣的可以了解一下2023-05-05JavaScript使用DeviceOne開發(fā)實(shí)戰(zhàn)(三)仿微信應(yīng)用
這篇文章主要介紹了JavaScript使用DeviceOne開發(fā)實(shí)戰(zhàn)(三)仿微信應(yīng)用的相關(guān)資料,需要的朋友可以參考下2015-12-12confirm的用法示例用于按鈕操作時(shí)確定是否執(zhí)行
這篇文章主要介紹了confirm的用法,confirm一般用于按鈕操作時(shí)確定是否執(zhí)行,需要的朋友可以參考下2014-06-06JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的刪除算法示例
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的刪除算法,簡單分析了javascript刪除數(shù)據(jù)結(jié)構(gòu)中二叉樹節(jié)點(diǎn)時(shí)所遇到的各種情況與相關(guān)的處理原理與算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04Javascrip實(shí)現(xiàn)文字跳動(dòng)特效
這篇文章主要介紹了Javascrip實(shí)現(xiàn)文字跳動(dòng)特效的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11