php微信登入41001錯誤的解決方法:1、查看日誌;2、透過stripslashes去掉反斜線;3、透過json_decode進行解碼即可。
本文操作環境:windows7系統、PHP7.1版、DELL G3電腦
如何解決php微信登入41001錯誤問題?
小程式登入解密使用者資料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()函數,問題解決!
*本來是個小問題,記錄下,給自己長個記性
推薦學習:《PHP影片教學》
以上是如何解決php微信登入41001錯誤問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!