微信小程序登录需要前端调用wx.login,返回的code交给后台调用code2Session,才能返回给前台一个openid(用户唯一标识)。
后台:node.js
报错:
原因:
错误代码将https.get的url和参数分开写了,以为httpsReq.write(data);是传参。实际就是应该把url和传参拼接在一起。而且get请求本来就只能把参数写url里,不能像post一样写成data再传。
错误代码:
let https=require('https');app.get('/code2Session',function(req,res){ console.log('code2Session',req.query); let data={ appid:"你的appid", secret:'你的appsecret', js_code:req.query.code, grant_type:'authorization_code' }; let body=''; let httpsReq=https.get(‘https://api.weixin.qq.com/sns/jscode2session’,(res)=>{ console.log('状态码',res.statusCode); console.log("请求头",res.headers); res.on('data',(data)=>{ body+=data; }).on('end',()=>{ console.log(body); }); }).on('error',(e)=>{ console.log('error:'+e.message); }); httpsReq.write(data); httpsReq.end();})正确代码:
let https=require('https');app.get('/code2Session',function(req,res){ console.log('code2Session',req.query); let data={ appid:"你的appid", secret:'你的appsecret', js_code:req.query.code, grant_type:'authorization_code' }; let url='https://api.weixin.qq.com/sns/jscode2session?appid='+data.appid+'&secret='+data.secret +'&js_code='+data.js_code+'&grant_type=authorization_code' let body=''; https.get(url,(res)=>{ console.log('状态码',res.statusCode); console.log("请求头",res.headers); res.on('data',(data)=>{ process.stdout.write(data); }).on('end',()=>{ console.log(body); }); }).on('error',(e)=>{ console.log('error:'+e.message); });})













