收藏
回答

转发时候的openGId解密不稳定(通过右上角转发)



环境: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)


麻烦帮我看一下 谢谢问题出在哪里


最后一次编辑于  2017-10-17
回答关注问题邀请回答
收藏

10 个回答

  • 洋葱头
    洋葱头
    2017-10-17

    有时候对 有时候不对


    那么说明解密的算法应该是正确的,那么就思考下,是否是输入的参数有误,是否用了错误的参数来解密。

    2017-10-17
    有用
    回复
  • 曹操
    曹操
    2018-08-06

    我也遇到这个问题了。sessionkey在本次登录过程中没变,但是解密的时候偶尔会出错

    2018-08-06
    有用
    回复 2
    • 小花吖
      小花吖
      2018-08-13

      请问你是怎么“偶尔出错”的,我一次都没解出来,老是解密结果为空,我方法试了也没问题,我用官方demo里的参数试的Y——Y

      2018-08-13
      回复
    • 曹操
      曹操
      2018-08-15

      我的偶尔出错,就是sessionkey过期的时候咯。

      所以我改成先判断sessionkey有没过期,如果过期了重新执行一次登录流程。再做接下来的事情

      2018-08-15
      回复
  • coder2017
    coder2017
    2018-05-04

    @楼主好,请问怎么解决的,可否分享一下,多谢多谢!

    2018-05-04
    有用
    回复
  • swen
    swen
    2018-04-19

    怎么解决的,能给个思路或者解决方案吗

    2018-04-19
    有用
    回复
  • 灿
    2017-11-18

    @X.Point 怎么解决的啊

    2017-11-18
    有用
    回复
  • 刘聪
    刘聪
    2017-11-17

    我也遇到了相同的问题,一直解决不了

    2017-11-17
    有用
    回复
  • 灿
    2017-10-17

    @林超 在会话状态有效的情况下,一次session_key可以被用来解密多次吗?又解密了登陆用户数据 又解密群信息?

    2017-10-17
    有用
    回复
  • X.Point
    X.Point
    2017-10-17

    汗 。。。 那咋办?找不到原因啊 时好时坏

    2017-10-17
    有用
    回复
  • 灿
    2017-10-17

    同样遇到这个问题,一直没解决

    2017-10-17
    有用
    回复
  • X.Point
    X.Point
    2017-10-17

    用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


    2017-10-17
    有用
    回复
登录 后发表内容