//获取codevargetCode = function(callback) {  wx.login({    success: function(res){      if(res.code) {        console.log('syslogin: ', res)        console.log('request id:', res.code)        typeofcallback === "function"&& callback(res.code)      }      else{        console.log('获取code失败!'+ res.errMsg)      }    }  })}// 获取access_tokenfunctiongetToken (callback) {  getCode((code) => {    wx.getUserInfo({      success: function(res){        console.log('用户允许授权')        varrequest = "code="+ code        wx.request({          url: Api.session,          data: {            code: request,          },          method: 'GET',          header:{            "Content-Type": "application/x-www-form-urlencoded"          },          success: function(res){            typeofcallback == "function"&& callback(res.data)          },          fail: function() {            console.log('wx.request 请求失败')          }        })      },      fail: function(res) {        if(res.errMsg) {          console.log('用户拒绝授权', res)          typeofcallback == "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)    iferr !=nil {        logs.Error(err.Error())        rets.WriteHttpErrMsgs(ctx.ResponseWriter, 500, err.Error(), err)        return    }       defer resp.Body.Close()    ifresp.StatusCode ==200{        body, err :=ioutil.ReadAll(resp.Body)        var data ZtgameLoginRt        err =json.Unmarshal([]byte(body), &data)        iferr !=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)....}