首頁  >  文章  >  後端開發  >  如何解決php微信登入41001錯誤問題

如何解決php微信登入41001錯誤問題

藏色散人
藏色散人原創
2022-01-11 09:10:004392瀏覽

php微信登入41001錯誤的解決方法:1、查看日誌;2、透過stripslashes去掉反斜線;3、透過json_decode進行解碼即可。

如何解決php微信登入41001錯誤問題

本文操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn