Solution à l'erreur 41001 de connexion php WeChat : 1. Vérifiez le journal ; 2. Supprimez les barres obliques inverses via des stripslashes ; 3. Décodez via json_decode.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3
Comment résoudre le problème d'erreur de connexion php WeChat 41001 ?
Connexion au mini-programme Données utilisateur décryptées Données cryptées -41001 : encodageAesKey illégal
Les pièges rencontrés lors de la connexion autorisée par WeChat pour les mini-programmes, le problème a finalement été résolu
Partagez maintenant quelques idées pour résoudre le problème.
Question :
Pour autoriser le mini-programme WeChat à se connecter, obtenez d'abord le code, puis obtenez la session_key et l'open_id, puis obtenez les données chiffrées et envoyez-les au serveur pour décrypter et obtenir les informations utilisateur, mais parfois cela réussit, parfois il renvoie -41001 Les erreurs et les journaux d'observation montrent que session_key est obtenu. Quelle en est la cause et comment le résoudre ?
Solution :
La direction que j'envisageais au début était l'expiration de session_key, car je ne connaissais pas l'expiration de session_key. Après de nombreux tests, j'ai découvert que ce n'était pas la cause
Puis j'ai commencé. en parcourant divers blogs connexes et en effectuant des recherches, je n'ai pas trouvé de solution au problème associé. Il se peut que ce problème soit trop inapproprié, il n'y a donc pas beaucoup de problèmes dans ce domaine
Enfin, j'ai commencé à parcourir la source déchiffrée du SDK. code, puis j'ai découvert que la raison de -41001 était de vérifier la session_key La longueur
if (strlen($this->sessionKey) != 24) { return ErrorCode::$IllegalAesKey; } //public static $IllegalAesKey = -41001; //>-41001: encodingAesKey 非法
Enfin, j'ai regardé de plus près les journaux (j'ai également comparé session_key en détail auparavant, mais j'ai juste regardé la valeur, un long chaîne de caractères, et je n'ai pas compris le sens profond. Je savais que certains réussissaient et d'autres échouaient, et je n'ai trouvé aucun modèle), faites attention à la longueur de session_key, et vous pourrez alors voir l'astuce. dedans
La chaîne json de PHP est parfois échappée avec une barre oblique inverse "". Lors du traitement en PHP, vous devez d'abord supprimer la barre oblique inverse, puis json_decode
$str = stripslashes($json); $arr = json_decode($str,true);
utilisez la fonction stripslashes (), problème résolu !
*Ceci est une petite question, enregistrez-la pour vous donner un souvenir
Etude recommandée : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!