微信小程序报错 "errcode":40163,"errmsg":"code been used

最近刚开始学习小程序,刚解决了一个前后端数据传递的问题,成功将用户信息存储到数据库,然后又遇到一个新的问题.

问题:
我使用getUserInfo来获取用户信息的,然而获取的信息里是没有唯一标识的,都无法作为主键,我后端是通过idWorker随机生成的id.
没错,问题就是数据库数据会重复,因为我无法判断数据是否在数据库已经存在,在这样的情况下,我了解到了login方法,可以生成code进行解析,解析出openid,而openid是可以作为用户id存入数据库的,我跟着官方文档操作了一遍,具体流程就不放了,网上和文档介绍的都比较详细,.
操作的比较成功,前后端都获取到了openid,但是获取完毕后前端又发送了一次请求,然后就这样了:
前端:
在这里插入图片描述
后端也是如此,于是我又一次面向百度编程.
了解几点:
1.code使用一次之后就失效
2.5分钟有效期
从后端打印数据也能看出,多次发请求但是我的url中的code并没有刷新,但是前端传递过来的code已经发生变化,所以报错了
多次传递的code:
在这里插入图片描述
url中的code:
在这里插入图片描述
我的方法中是有将url替换的操作,就算每次传递进来的code是新的,我的url应该也会随之更新的,继续打断点,终于发现问题
微信提供的url是这样的:
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

我的方法是这样的(因为url中只有code的值在变,所以我写在了yml中,方便使用):
在这里插入图片描述
所以我的这个方法只能替换微信的这里的数据,
在这里插入图片描述
当执行一次后JSCODE字符串已经被替换为上一次的code,所以再次执行时是没有JSCODE这个字符串的,因此url不会再变化.

只需要略微修改即可:
在这里插入图片描述
在创建get请求时执行replace方法,利用string数据的特性,原始的url是不会发生变化的.
再次运行,结果如下:
在这里插入图片描述
url随着code的更新也更新了,问题解决

总结:其实我这问题纯粹是自己粗心造成的,和我一样的可能不多,但报这个错误的话可以多打印几次GET的url看一看,问题大概率是在这里.

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值