环境:node+express 服务器 https
session_key 是在转发时候实时获取的
在服务器上打印出来(** 是发帖时候加的) 各个信息都正常。
有时候解密能过 有时候就如下面的情况:
sessionKey 8J1KtJWLwt8qKZgl8h+U**==
encryptedData AvsT/xYa3aUwTBGJTirvZVLpjyeGTC7BO1fvxOwvKuueUeD1+yuyHg5OPQo9i0xQf5oHesrrAx**aeXbzwJ0i9wePKNCoRrJIpdc4xhG4CT6BSKFCJ7lyrGs8yq3JRmfOSW8ZsxOEAaMtziFwptyXw==
iv G83zaou0ZdYI8BrmLoJ2**==
Error: Illegal Buffer
at WXBizDataCrypt.decryptData (/var/www/html/***/utility/WXBizDataCrypt.js:25:11)
麻烦帮我看一下 谢谢问题出在哪里
有时候对 有时候不对
那么说明解密的算法应该是正确的,那么就思考下,是否是输入的参数有误,是否用了错误的参数来解密。
我也遇到这个问题了。sessionkey在本次登录过程中没变,但是解密的时候偶尔会出错
请问你是怎么“偶尔出错”的,我一次都没解出来,老是解密结果为空,我方法试了也没问题,我用官方demo里的参数试的Y——Y
我的偶尔出错,就是sessionkey过期的时候咯。
所以我改成先判断sessionkey有没过期,如果过期了重新执行一次登录流程。再做接下来的事情
@楼主好,请问怎么解决的,可否分享一下,多谢多谢!
怎么解决的,能给个思路或者解决方案吗
@X.Point 怎么解决的啊
我也遇到了相同的问题,一直解决不了
@林超 在会话状态有效的情况下,一次session_key可以被用来解密多次吗?又解密了登陆用户数据 又解密群信息?
汗 。。。 那咋办?找不到原因啊 时好时坏
同样遇到这个问题,一直没解决
用code 换取信息的代码:
const https = require('https')
const qs = require('querystring')
const host = require('./wxhost.json')
const getOpenid = (query, callback) => {
let code = query.query.code
const data = {
appid: host.appid,
secret: host.secret,
grant_type: 'authorization_code',
js_code: code
}
let content = qs.stringify(data)
let url = host.url + 'sns/jscode2session?' + content
https.get(url, function (res) {
var datas = []
var size = 0
res.on('data', function (data) {
datas.push(data)
size += data.length
})
res.on('end', function () {
var buff = Buffer.concat(datas, size)
var result = JSON.parse(buff)
callback(result)
})
}).on('error', function (err) {
Logger.error(err.stack)
callback.apply(null)
})
}
module.exports = getOpenid