微信小程序静默登录的实现代码
1.通过wx.login获取登录凭证(code)
wx.login({success:function(res){console.log(res.code);}})
2.在此处获得
appid和secret:https://developers.weixin.qq.com/sandbox
如图
3.小程序端
http://127.0.0.1:8080/jeecg-boot这一段是自己的访问路径
//app.js App({ globalData:{ appid:'', appsecret:'',// openid:'' } onLaunch:function(){ varthat=this; //登录 wx.login({ success:function(res){ console.log(res.code) wx.request({ url:'http://127.0.0.1:8080/jeecg-boot/hwork/hworkLog/GetOpenIdServlet', data:{ appid:that.globalData.appid, secret:that.globalData.appsecret, js_code:res.code, grant_type:'authorization_code' }, method:'POST', header:{ 'Content-Type':'application/x-www-form-urlencoded' }, success:function(res){ console.log(res) //转json varj=JSON.parse(res.data.result) //获取到openid that.globalData.openid=j.openid; } }) } }) } })
4.后台代码
工具类
packageorg.jeecg.modules.hworkorder.util; importjava.io.BufferedReader; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.io.PrintWriter; importjava.net.HttpURLConnection; importjava.net.URL; publicclassWeChatService{ /** *调用对方接口方法 *@parampath对方或第三方提供的路径 *@paramdata向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 */ publicstaticStringinterfaceUtil(Stringpath,Stringdata){ StringopenId=""; try{ URLurl=newURL(path); //打开和url之间的连接 HttpURLConnectionconn=(HttpURLConnection)url.openConnection(); PrintWriterout=null; //请求方式 //conn.setRequestMethod("POST"); ////设置通用的请求属性 conn.setRequestProperty("accept","*/*"); conn.setRequestProperty("connection","Keep-Alive"); conn.setRequestProperty("user-agent","Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)"); //设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个 //最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, //post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 conn.setDoOutput(true); conn.setDoInput(true); //获取URLConnection对象对应的输出流 out=newPrintWriter(conn.getOutputStream()); //发送请求参数即数据 out.print(data); //缓冲数据 out.flush(); //获取URLConnection对象对应的输入流 InputStreamis=conn.getInputStream(); //构造一个字符流缓存 BufferedReaderbr=newBufferedReader(newInputStreamReader(is)); Stringstr=""; while((str=br.readLine())!=null){ openId=str; System.out.println(str); } //关闭流 is.close(); //断开连接,最好写上,disconnect是在底层tcpsocket链接空闲时才切断。如果正在被其他线程使用就不切断。 //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。 conn.disconnect(); System.out.println("完整结束"); }catch(Exceptione){ e.printStackTrace(); } returnopenId; } publicstaticStringGetOpenID(Stringappid,Stringappsecret,StringCode){ //临时登录凭证 StringURL="https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+appsecret+"&js_code="+Code+"&grant_type=authorization_code"; StringopenId=interfaceUtil(URL,""); returnopenId; } }
@RestController @RequestMapping("/hwork/hworkLog") @Slf4j publicclasshworkLogContrller{ @RequestMapping(value="/GetOpenIdServlet",method=RequestMethod.POST) publicResultGetOpenIdServlet(HttpServletRequestrequest,HttpServletResponseresponse){ Result result=newResult (); response.setContentType("text/html;charset=utf-8"); /*设置响应头允许ajax跨域访问*/ response.setHeader("Access-Control-Allow-Origin","*"); /*星号表示所有的异域请求都可以接受,*/ response.setHeader("Access-Control-Allow-Methods","GET,POST"); //转成json数据 Stringappid=request.getParameter("appid"); Stringsecret=request.getParameter("secret"); Stringjs_code=request.getParameter("js_code"); if(appid!=null&&appid!=""&&secret!=null&&secret!=""&&js_code!=null&&js_code!=""){ WeChatServicegetOpenId=newWeChatService(); StringopenId=getOpenId.GetOpenID(appid,secret,js_code); result.setResult(openId); result.setMessage("后台收到并返回"); }else{ result.setMessage("参数为空"); result.setSuccess(false); } returnresult; } }
到这里就能得到openid了
总结
以上所述是小编给大家介绍的微信小程序静默登入的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。