//获取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)....}