• 如此甚好
    2022-02-19
    老师,你说的那两种方法都试了,还是不行,报下面的错误,这个sessionKeyRecordId 是怎么来的啊,没搞懂 sessionKeyIsValid true ctx.session.sessionKeyRecordId undefined sessionKey2 undefined xxx POST /user/wexin-login2 500 156ms - TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined at new from (buffer.js:313:9) at WXBizDataCrypt.decryptData (G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\lib\WXBizDataCrypt.js:10:20) at G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\routers\user-router.js:201:28 at processTicksAndRejections (internal/process/task_queues.js:97:5) at async G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\routers\user-router.js:65:9 at async G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\routers\user-router.js:24:9 at async G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\middleware\index.js:95:5 at async session (G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\node_modules\koa-session\index.js:41:7) at async G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\middleware\index.js:58:5 at async G:\WXSmallAPP\wxproject\weapp-practice-4.29\server\middleware\index.js:49:5
    展开

    作者回复: 这应该是后端解密相关的 关键看这一句: “The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined” 后端准备解密的数据没有收到 可以前后联调一下,看前端数据传过来没有? 如果还有问题 你可以加我微信9830131, 我用teamviewer远程看一下你的代码 (PS:远程看代码,这应该是训练营才有的服务😂)

    共 3 条评论
    
  • 久九酒
    2021-07-21
    老师,尝试了很多次,都有这个错误,用的代码也是您在留言区留的代码。有思路能提供吗? sessionKeyIsValid true sessionKey2 undefined xxx POST /user/wexin-login2 500 170ms - TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined at new from (buffer.js:330:9) at WXBizDataCrypt.decryptData (C:\work\wx\weapp-practice-1\server\lib\WXBizDataCrypt.js:10:20) 在说类型不对,即使改成string类型,也会有新的报错 sessionKeyIsValid true sessionKey2 undefined err Error: Invalid key length at Decipheriv.createCipherBase (internal/crypto/cipher.js:103:19) at Decipheriv.createCipherWithIV (internal/crypto/cipher.js:121:20) at new Decipheriv (internal/crypto/cipher.js:262:22) at Object.createDecipheriv (crypto.js:131:10) at WXBizDataCrypt.decryptData (C:\work\wx\weapp-practice-1\server\lib\WXBizDataCrypt.js:16:27) 问题像是因为sessionKey为undefined。但是不知道怎么修改这个,辛苦老师帮忙看下
    展开

    作者回复: 不是类型不对,是加密数据没有传过来,与登陆有关。 下面这个视频是登陆相关的补充视频,可以看一下,当然也可以不看。 > 关于微信登陆机制修改与源码使用的说明.mp4 > 链接:https://pan.baidu.com/s/1vkYMM-GK6Fh1_DkCAhD_6Q > 提取码:liyi 如果不看的话,最简单的方法,是在微信开发者工具->工具栏->缓存,选择清除所有缓存,然后重启项目测试。 如果还有问题,可以往后获取更新的代码。或者将工程连接发给我,我给你看一下也可以。

    
    
  • LIYI
    2021-01-15
    https://gitee.com/geektime-geekbang/weapp-practice/tree/4.5-0728

    作者回复: 源码是分阶段的,仓库主分支是最新源码。使用中有问题欢迎留言。

    
    
  • swordman
    2020-09-21
    老师,我在调试代码时发现一个问题: 我在引入了weapp-cookie以后,尝试使用微信自带的wx.request去访问http://localhost:3000/, 发现views的值会不断加1,但是使用wxp.request2访问http://localhost:3000/, session确实是无效的,views不会变化。但wxp.request实际上不是调用了wx.request吗?为什么会出现这种情况呢? 代码如下: // 安装weapp-cookie以后,使用微信自带wx.request测试支持携带cookie的请求 wx.request({ url: 'http://localhost:3000', success: function(res) { console.log("execwxreqeust res:" + res) } })

    作者回复: 是的,wxp.request实际上确是调用了wx.request。 可以同时查看一下调试区的network窗口,看看请求与返回有什么不一样没有。

    
    
  • Sk_Keith
    2022-12-30 来自广东
    记录下遇到的登录时报40029错误码的问题,先是打印日志,再分析是接口https://api.weixin.qq.com/sns/jscode2session(koa2-weixin-auth.js文件中),返回了errorcode:40029,errmsg:invalid code, rid: 63ae5309-07f84963-6aa09ab,查网上资料,得知是配置app-id app-secret不一致出的问题,要保证后端关于微信小程序配置 app-id app-secret(文件存放在server/config/index.js中)和前端小程序配置 app-id(刚登陆时设置的,或者在project.config.json文件中更改),最后各自重新打包,小程序中清空缓存。记录一下,解决了这个问题真的痛快!中间也查阅到小程序登录、用户信息相关接口调整https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?highLine=login
    
    1