收藏
回答

微信登录获取access_token时不定期出现40163:code been used问题?

微信登录两步验证时(oauth2/authorize && oauth2/access_token),第二部通过code换取openid时,报错40163:code been used。文档显示是code重复使用的问题,但是经过排查,我们自己的逻辑里面没有重复使用code的情况,怀疑是oauth2/authorize接口返回的code重复了或者是微信回调时进行了多次回调。而且这种情况只存在于少数用户。烦请官方帮助排查一下。感谢!

回答关注问题邀请回答
收藏

2 个回答

  • 菜背篼
    菜背篼
    02-06

    可以看到微信使用同一个code回调了两次我们的接口,导致第二次报错

    02-06
    有用
    回复 13
    • 菜背篼
      菜背篼
      02-06
      蓝色框里面是requestId,两次不同的请求使用了同一个code
      02-06
      回复
    • stop eating
      stop eating
      02-06
      这不就是回调了两次吗?  code 第一次调用成功,就把code作为建 结果作为值缓存起来,如果第二次回调,就去判断有没有缓存,有缓存就取缓存,没有缓存那就是第一次调用。我就是这么解决的,程序运行2年了
      02-06
      回复
    • stop eating
      stop eating
      02-06回复菜背篼
      我开发过一个企业微信,里面有十几个应用也是用这种方法解决的,17年的时候这种重复回调特别多。项目框架老,没有用redis,在数据库建了一张表实现的
      02-06
      回复
    • 菜背篼
      菜背篼
      02-06回复stop eating
      明白了,就是微信回调了多次,导致换取openid多次,所以报错,感谢老哥!
      02-06
      回复
    • stop eating
      stop eating
      02-06回复菜背篼
      用aop 过滤重复请求也可以
      02-06
      回复
    查看更多(8)
  • 手信云
    手信云
    02-06

    异步请求多次并行,使用了同一个code吧

    02-06
    有用
    回复 6
    • stop eating
      stop eating
      02-06
      wx.login 调用一次,有时候会发送两条请求
      02-06
      回复
    • 菜背篼
      菜背篼
      02-06
      没有,都是java代码同步调用微信接口获取openid
      02-06
      回复
    • 菜背篼
      菜背篼
      02-06回复stop eating
      我们没有使用wx.login,是直接跳转oauth2/authorize然后通过回调的code直接对oauth2/access_token发起请求换取openid换取openid只调用了一次
      02-06
      回复
    • stop eating
      stop eating
      02-06回复菜背篼
      只调用一次,得用数据说话,可不是靠感觉的。我碰到的,都是回调两次,服务号、小程序、企业微信都碰见过。
      02-06
      回复
    • 菜背篼
      菜背篼
      02-06回复stop eating
      微信回调我们我们才会发起换取openid的调用,日志显示微信回调了我们两次,第二次报错code been used
      02-06
      回复
    查看更多(1)
登录 后发表内容
问题标签