小程序登錄解密用戶數據encryptedData -41001: encodingAesKey 非法


問題:

做小程序微信授權登錄,先獲取code,然后去獲取到session_key和open_id,再拿到encryptedData,傳到服務器去解密拿到用戶信息,但是有時成功,有時返回-41001錯誤, 觀察日志,都有獲取到session_key,這是什么原因造成的,應該怎么去解決呢?

解決方法:

剛開始考慮的方向一直是session_key過期之類的,因為不知道session_key的過期,后經多次試驗知道不是此原因導致

然后開始翻閱各種相關博客及搜索相關問題,終沒有找到解決方案,可能是出現的這個問題太不應該了,所以這方面的問題並不多

最后開始翻看解密的SDK源碼,然后發現-41001是的原因 是驗證了session_key的長度

if (strlen($this->sessionKey) != 24) {
return ErrorCode::$IllegalAesKey;
}
//public static $IllegalAesKey = -41001;
//>-41001: encodingAesKey 非法
最后又細細去看日志(之前也有詳細對比session_key,只是看有值,一大串字符,也不懂其中的深意,就知道有的成功,有的失敗,根本找不到規律),留意session_key長度,才看出來其中的貓膩

PHP的json字符串有時候加上反斜杠”\”來轉義,PHP處理時需要先去掉反斜杠,然后再json_decode

$str = stripslashes($json); 
$arr = json_decode($str,true);

使用stripslashes()函數,問題解決!


免責聲明!

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



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