[解決]微信小程序調用wx.login解密之后出現亂碼的問題


最近在給公司開發微信小程序,需要用到微信登錄,根據文檔要求需要把獲取的用戶信息按照AES進行解密。

我使用的是官方提供的PHP demo,拷貝到程序中,測試發現,解密之后的數據前面有一串亂碼。

 

類似於這樣子的,前面一段是亂碼。

 

經過仔細的檢查,發現官方的提供的demo中的帳號和機密之后的信息是可以解密的,這就說明解密代碼是沒有問題的。

 

后來查詢微信開發者社區,找到好多解密失敗。其中一個回答說是因為多次調用wx.login之后導致的問題。

終於看到解決方案,於是趕緊去看我的代碼。可是查找半天發現只調用了一次,根本不是這個問題。

 

有一次走到了死胡同,沒辦法了,還是看代碼吧。

根據文檔,應該是先調用wx.login(),成功之后再調用wx.getUserInfo(), 於是我就想,會不會是我把wx.getUserInfo()獲取到的值沒有正確的傳給服務器呢?

 

既然不確定,那就得看看。於是,打印wx.getUserInfo()的返回值,是這樣子的

 

看到結果之后我就跟我的請求服務器的參數挨個對照,當看到encryptData時,發現了問題,文檔上寫的是應該把encryptedData的值用於解密,而我則是把encryptData的值

取出來了,所以解密結果就不正確了。

 

至此,發現問題,把參數改成encryptedData之后解密成功。

 

 總結一下問題: 由於wx.getUserInfo()返回值中encryptData和encryptedData參數名稱過於相似,導致我用錯變量,實在是不應該。

 

至於為什么微信要多返回一個沒用的參數(目前還沒發現它的作用),我就不知到了,而且文檔上根本就沒提到這個。

 

 

 

 

 希望大家編碼的時候能夠細心一點,不要犯我這樣的錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM