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