appid:wxd4298cf3aff9db35
获取openid返回的错误;
errcode: 40029 errMsg: invalid code, hints: [ req_id: 9r2gBa0398ns84 ]
网友回复:
你是怎么调用接口的?能否确认使用的 code 的确是 wx.login 得到的那个 code?
开发工具端调用wx.login(); 根据返回的res.code; 传递到自己服务器后端,然后服务器后端拿这code到微信服务器端获取openid和session id
res.code确认过了;是一致的;在开发工具端console.log(res.code)与自己服务器后端log对比,传递没有问题;
ps:appid和secret也是没有问题的,确认多次了
真如你所说的这种情况,那实在是不好说问题在哪里了,也许只能请官方协助检查了。
不过,其实张冠李戴的情况是挺容易出现的,有时候就是瞪着眼睛看着也看不出来……
确实是如此,弱弱问一下,如何请求官方协助啊;
常做善事,常存善念……人品够了,就会有一个昵称里带着蓝色【官】字的官技进到这个帖子里来……
这..........
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject
或者贴下你的代码
待会贴代码
//获取codevar getCode = function(callback) { wx.login({ success: function(res){ if(res.code) { console.log('syslogin: ', res) console.log('request id:', res.code) typeof callback === "function" && callback(res.code) } else { console.log('获取code失败!' + res.errMsg) } } })}// 获取access_tokenfunction getToken (callback) { getCode((code) => { wx.getUserInfo({ success: function(res){ console.log('用户允许授权') var request = "code=" + code wx.request({ url: Api.session, data: { code: request, }, method: 'GET', header:{ "Content-Type": "application/x-www-form-urlencoded" }, success: function(res){ typeof callback == "function" && callback(res.data) }, fail: function() { console.log('wx.request 请求失败') } }) }, fail: function(res) { if(res.errMsg) { console.log('用户拒绝授权', res) typeof callback == "function" && callback({errMsg : "userDenyed"}) } } }) })} |
小程序端代码
//golang代码,服务端func Login(ctx *context.Context) { ctx.Request.ParseForm() code := ctx.Request.FormValue("code") logs.Info("client login code:", code) //向微信服务器发起请求 tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } appid := "wxd4298cf3aff9db35" secret := "XXXXX" //secret确认过,没有问题 url := "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code" client := &http.Client{Transport: tr} resp, err := client.Get(url) if err != nil { logs.Error(err.Error()) rets.WriteHttpErrMsgs(ctx.ResponseWriter, 500, err.Error(), err) return } defer resp.Body.Close() if resp.StatusCode == 200 { body, err := ioutil.ReadAll(resp.Body) var data ZtgameLoginRt err = json.Unmarshal([]byte(body), &data) if err != nil { rets.WriteHttpErrMsgs(ctx.ResponseWriter, 500, err.Error(), err) return } logs.Info("errcode:", data.ErrCode, "errMsg:", data.ErrMsg) //logs.Info("winxin server login return: ", data.Openid) //logs.Info(data.Session_key)....} |





