zoukankan      html  css  js  c++  java
  • 小程序登录解密用户数据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()函数,问题解决!

  • 相关阅读:
    《数据挖掘导论》研读(1)
    《机器学习理论、方法及应用》研读(2)
    《机器学习理论、方法及应用》研读(1)
    Python3爬虫(3)_urllib.error
    Python3爬虫(2)_利用urllib.urlopen发送数据获得反馈信息
    debian 安装svn197
    Debian卸载软件197
    chmod 详解197
    debian 创建快捷方式197
    vim高亮配置197
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/11857139.html
Copyright © 2011-2022 走看看