我也遇到类似的问题。我这里把日志贴一下吧,也方便微信的技术找一下问题的原因。
请看下面的服务端日志:(我是做了序列化处理的,所以会有类似a:9:等字符;openid由于是敏感信息,被我删掉了;encryptedData也是敏感信息,也被我删掉了能正确解密的那两条,留着无法正确解密的两条做证据。)
首先,从日志记录时间可以看出,这4条登录请求之间相隔没多久。
其次,可以看出第2、3、4这三条日志微信端返回的signature是一模一样的。
再次,可以看出这4条日志接收到的code都是不一样的并且都能正常获取到session_key,从而证明了前端传过来的code是完全没问题的。
最后,可以看到第2、3这两条日志的session_key是一样的,而第4条日志的session_key变了。
结论:第2第3条日志的session_key一致,signature一致,并且能正确利用rawData、session_key来计算出微信返回的signature;而到了第4条日志,虽然session_key还是没有变化,signature却变化了,导致计算出来的signature和微信返回的signature不一致,必然导致数据验证失败。而最要命的是:数据验证失败的时候,用户的加密信息就必定发生解密失败的情况。最后直接导致了无法进行下一步开发。
[2018-12-12 10:15:31]用户信息不合法,请重新登录。errcode:-41003,接收到的参数:a:9:{s:4:“sign”;s:0:“”;s:1:“t”;s:10:“1544580930”;s:1:“v”;s:2:“10”;s:4:“code”;s:32:“023Glq742TueQO0eIw742T6a742Glq76”;s:4:“type”;s:1:“1”;s:13:“encryptedData”;s:536:“kF3q0YCzix8HIppD8FMKnu+GC+rORcumaMWYDj94ukheiU6M2IAh2W2r9xxOnSH4ipHrEQhTwwrEvgMaal63ZR33uFXtR8FnjGBKCbfVALvNsCGOa7p36U0ljtnJbik/DQWi9YoTg3RtoC9EUacUBJhQJRjCUS+Iq+4O9E9SBrJRSPrdhNZQd3kvs75HHNAnzP6UL2SA2OEGXkiwRUwX0upcwA41YrocCaSwYOs7GyDZC8GO3JFpOtP1dg+CsL8yEmMy0O3vV/06IYgKsfo/FA23B3Z4jQIC2RTTCzegNVeREz9GcwGfVyI8YmQOW9gcj6XnrWdayiqEheH7QCjNC8VB7SS/Pytg32c7fTazLTsLRyeWuIDz1QIFDEdJvg8s9C/TjNacHDouhWzKBnIwhnSlFpyFI3H+F/MVVdqA46XD/kgvwQYeTqsxx/micUIRTtVXN09JV0SjnJeV5+UI+BhlVHkGsRzBD2dJYqp/ckmdE/RX5tr1xKGFKjUnK0lyz+1mDc0weqGjagf6j+wDlg==”;s:9:“signature”;s:40:“dbbf889a23e720bfab5edbb07ef2fb31be86b3f6”;s:2:“iv”;s:24:“7blTilWs8PCbLeP1M3PjyA==”;s:7:“rawData”;s:247:“{“nickName”:“KAZUKI”,“gender”:1,“language”:“zh_CN”,“city”:“广州”,“province”:“广东”,“country”:“中国”,“avatarUrl”:“https://wx.qlogo.cn/mmopen/vi\_32/KUwFGLsK1MHqg2kDJkJCWY5rMbPP0hZZqzXZcBa0WLYoc9szTmPSuYrKv5FbHOOg1xv40sqYFaibiaFzT6ibte1Ag/132"}";},微信获取openid结果:a:2:{s:11:“session_key”;s:24:“yRhjlwu4fTeVd0arZ9KTSQ==”;s:6:“openid”;s:28:””;}
[2018-12-12 10:18:36]用户信息合法,暂时记录用以调试。接收到的参数:a:9:{s:4:“sign”;s:0:“”;s:1:“t”;s:10:“1544581115”;s:1:“v”;s:2:“10”;s:4:“code”;s:32:“033dfteH1V3rQ00850eH1tUjeH1dfteG”;s:4:“type”;s:1:“1”;s:13:“encryptedData”;s:536:“”;s:9:“signature”;s:40:“f0a032dadfcea3108bfb000f8e2d4b39a31458a1”;s:2:“iv”;s:24:“Zh8RDbkFYQk0WGhY4qbyWQ==”;s:7:“rawData”;s:247:"{“nickName”:“KAZUKI”,“gender”:1,“language”:“zh_CN”,“city”:“广州”,“province”:“广东”,“country”:“中国”,“avatarUrl”:"https://wx.qlogo.cn/mmopen/vi\_32/KUwFGLsK1MHqg2kDJkJCWY5rMbPP0hZZqzXZcBa0WLYoc9szTmPSuYrKv5FbHOOg1xv40sqYFaibiaFzT6ibte1Ag/132"}";}微信获取openid结果:a:2:{s:11:“session_key”;s:24:“yrsUI7duBqMFj6Qk7vYFjg==”;s:6:“openid”;s:28:“oJ2Li5FqGVwfb9idWmfCD-C-VOG4”;}
[2018-12-12 10:19:41]用户信息合法,暂时记录用以调试。接收到的参数:a:9:{s:4:“sign”;s:0:“”;s:1:“t”;s:10:“1544581181”;s:1:“v”;s:2:“10”;s:4:“code”;s:32:“033wCPXX1D9CZ01ZrCYX14aVXX1wCPXt”;s:4:“type”;s:1:“1”;s:13:“encryptedData”;s:536:“”;s:9:“signature”;s:40:“f0a032dadfcea3108bfb000f8e2d4b39a31458a1”;s:2:“iv”;s:24:“2LDZs+Zz5UMchNnajuLdRQ==”;s:7:“rawData”;s:247:“{“nickName”:“KAZUKI”,“gender”:1,“language”:“zh_CN”,“city”:“广州”,“province”:“广东”,“country”:“中国”,“avatarUrl”:“https://wx.qlogo.cn/mmopen/vi\_32/KUwFGLsK1MHqg2kDJkJCWY5rMbPP0hZZqzXZcBa0WLYoc9szTmPSuYrKv5FbHOOg1xv40sqYFaibiaFzT6ibte1Ag/132"}";}微信获取openid结果:a:2:{s:11:“session_key”;s:24:“yrsUI7duBqMFj6Qk7vYFjg==”;s:6:“openid”;s:28:””;}
[2018-12-12 10:53:33]用户信息不合法,请重新登录。errcode:-41003,接收到的参数:a:9:{s:4:“sign”;s:0:“”;s:1:“t”;s:10:“1544583212”;s:1:“v”;s:2:“10”;s:4:“code”;s:32:“033Tpt4C0VUlBi2Xbj3C0PDI4C0Tpt4Z”;s:4:“type”;s:1:“1”;s:13:“encryptedData”;s:536:“OAYRzLvjj0sKrFUmfzShZEbN22/B1kV3pScdkVRi7/rPKue7WZAuWrB251+I376/jq1WqJXBpPOTocTn6RAfAxWavtM5DEtbm4Ba5IFvxf2F2LTFZ+v1ijoeEZHlYNSmEuz7eyNceYDjdqdMBh6gD/wGFvBxnMnVIvMj/jvzR7iRO7inU8t245nw5AcObaHavQLj1xD/zd8KRzyOqDC1LqP8FSvwlg/pB180vZZzGeZ5E+ppW/fjudqdc9DWyI/bcAlbfvUpTsqB4NkRQR8MpzmKC+qYWXc0V7dM8QZSVgWHYfol2+YIzg5kPoyGvXoHx/+dnNAE3ezAJTw5DEKJZlDcTvExkBrwHL4MVsImUkBqLJnyF8GiY2oouwhfiV/YwaVKaiY3dE0+4wUphEE/Wa2a7HFtAb7Mn1iRQ6AlD6rJzubnXhHqGYQ+BdtLG0Ba1ajJniAWqqjVDhExpMZ78KXVCmQV7yMueBDn6CBp754q4caWVuTlmMvMFQhSnA8HHjqL5ZbHgCddl9koPP+NEg==”;s:9:“signature”;s:40:“f0a032dadfcea3108bfb000f8e2d4b39a31458a1”;s:2:“iv”;s:24:“bHq9jOZsvlXL0awzxvtRww==”;s:7:“rawData”;s:247:“{“nickName”:“KAZUKI”,“gender”:1,“language”:“zh_CN”,“city”:“广州”,“province”:“广东”,“country”:“中国”,“avatarUrl”:“https://wx.qlogo.cn/mmopen/vi\_32/KUwFGLsK1MHqg2kDJkJCWY5rMbPP0hZZqzXZcBa0WLYoc9szTmPSuYrKv5FbHOOg1xv40sqYFaibiaFzT6ibte1Ag/132"}";},微信获取openid结果:a:2:{s:11:“session_key”;s:24:“SKAfN8Ndwr3S43m5MsWhRg==”;s:6:“openid”;s:28:””;}