40029错误, 已经尝试过网上其他人的所有解决办法仍然无效:
重新在开发者工具里建立一个项目,填写appID, 我甚至重新注册了一个小程序,也无效。
已确保代码中没有用code两次
正常的一套逻辑,开发工具里前端拿到code, 发送给自己的本地服务器后端:
wx.login({ success: res => { if (res.code) { wx.request({ method: "GET" , url: "http://localhost:8000/wechatSession?sessionCode=" + res.code, success: res => { console.log(res) } }) } else { console.log( '登录失败!' + res.errMsg) } } })
|
后端代码:
app.get( "/wechatSession" , function (req, res) { const wechatCode = req.query.code axios.get( 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appID + '&secret=' + appSecret + '&js_code=' + wechatCode + '&grant_type=authorization_code' ) .then( function (response) { res.send(response.data) }) . catch ( function (error) { console.log(error); }); }); |
很奇怪的一件事情:
我如果直接在微信开发者工具里去拿session id的话就可以返回成功,但是通过本地服务器就不行,也试过用生产环境的服务器,同样不行。
{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: 5P8xFa0256hb26 ]"}
错误提示能不能,写清楚点。 到底是什么错误。code 是小程序取的没有问题。
appid 等都没问题 以前都正常,今天突然就报错了。
我的也是,以前没事,今天写了个获取access_token的接口开始报错了,注释了新增的这段还是报错。。
我是后端请求。没有取access_token 只是根据code 取openid。
我也遇到了,而且浏览器返回也是40029,重新二次的话返回是code已被使用错误.
不是code有问题,就是appid和secret与小程序使用的appid不一致,导致code报错
一样的啊。
我用的java写的后端,目前正常使用中
同样的代码 同事正常,测试环境正常。本机就这个40029
还有这种问题?
你请求传的参数是sessionCode,服务器取参数用code,肯定拿不到客户端传过去的参数呀
我的错 那个只是我的命名。。。 传的还是code 这是完整的
wx.login({
success: res => {
if
(res.code) {
wx.request({
method:
"GET"
,
url:
"http://localhost:8000/wechatSession?sessionCode="
+ res.code,
success: res => {
console.log(
'-ssssss wow----'
)
console.log(res)
}
})
}
else
{
console.log(
'登录失败!'
+ res.errMsg)
}
}
})
啊。。。。但是你让我醒悟了。。
我最后取的是 code 应该取sessionCode.
又是一个 typo引发的血案!
sorry!
搞定:
1 使用
code2accessToken
文档中的访问url地址
2确保project.config.json 中的appid为申请的appid(重启重建项目用原文件夹)
这个code应该是通过appid 然后加密获得的,所以服务器如果你获得code不对自然会出错,原来我的appid是默认项目id,所以出错,搞定。
求助求助! 真的是懵了这个bug