当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 微信小程序静默登录的实现代码

微信小程序静默登录的实现代码

2020年03月09日  | 移动技术网IT编程  | 我要评论

1.通过 wx.login获取 登录凭证(code)

wx.login({ success: function (res) { console.log(res.code); } })

2.在此处获得

appid 和 secret :

如图

3.小程序端

这一段是自己的访问路径

 //app.js
app({
 globaldata: {
 appid: '',
 appsecret: '',//
 openid: ''
 }
 onlaunch: function () {
 var that =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
   var j= json.parse(res.data.result)
   //获取到openid
   that.globaldata.openid = j.openid;
   }
  })
  }
 })
  }
})

4.后台代码

工具类

package org.jeecg.modules.hworkorder.util;
import java.io.bufferedreader;
import java.io.inputstream;
import java.io.inputstreamreader;
import java.io.printwriter;
import java.net.httpurlconnection;
import java.net.url;
public class wechatservice {
 /**
  * 调用对方接口方法
  * @param path 对方或第三方提供的路径
  * @param data 向对方或第三方发送的数据,大多数情况下给对方发送json数据让对方解析
  */
 public static string interfaceutil(string path,string data) {
  string openid="";
  try {
   url url = new url(path);
   //打开和url之间的连接
   httpurlconnection conn = (httpurlconnection) url.openconnection();
   printwriter out = null;
   //请求方式
//   conn.setrequestmethod("post");
//   //设置通用的请求属性
   conn.setrequestproperty("accept", "*/*");
   conn.setrequestproperty("connection", "keep-alive");
   conn.setrequestproperty("user-agent", "mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1)");
   //设置是否向httpurlconnection输出,设置是否从httpurlconnection读入,此外发送post请求必须设置这两个
   //最常用的http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在url字串后面,传递给servlet,
   //post与get的 不同之处在于post的参数不是放在url字串里面,而是放在http请求的正文内。
   conn.setdooutput(true);
   conn.setdoinput(true);
   //获取urlconnection对象对应的输出流
   out = new printwriter(conn.getoutputstream());
   //发送请求参数即数据
   out.print(data);
   //缓冲数据
   out.flush();
   //获取urlconnection对象对应的输入流
   inputstream is = conn.getinputstream();
   //构造一个字符流缓存
   bufferedreader br = new bufferedreader(new inputstreamreader(is));
   string str = "";
   while ((str = br.readline()) != null) {
    openid=str;
    system.out.println(str);
   }
   //关闭流
   is.close();
   //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
   //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
   conn.disconnect();
   system.out.println("完整结束");
  } catch (exception e) {
   e.printstacktrace();
  }
  return openid;
 }
 public static string getopenid(string appid,string appsecret,string code) {
  //临时登录凭证
  string url = "https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+appsecret+"&js_code="+code+"&grant_type=authorization_code";
  string openid=interfaceutil(url, "");
  return openid;
 }
}
@restcontroller
@requestmapping("/hwork/hworklog")
@slf4j
public class hworklogcontrller {
@requestmapping(value = "/getopenidservlet", method = requestmethod.post)
 public result<string> getopenidservlet(httpservletrequest request, httpservletresponse response){
  result<string> result=new result<string>();
  response.setcontenttype("text/html;charset=utf-8");
  /* 设置响应头允许ajax跨域访问 */
  response.setheader("access-control-allow-origin", "*");
  /* 星号表示所有的异域请求都可以接受, */
  response.setheader("access-control-allow-methods", "get,post");
  //转成json数据
  string appid=request.getparameter("appid");
  string secret=request.getparameter("secret");
  string js_code=request.getparameter("js_code");
  if(appid!=null&&appid!=""&&secret!=null&&secret!=""&&js_code!=null&&js_code!=""){
   wechatservice getopenid=new wechatservice();
   string openid=getopenid.getopenid(appid,secret,js_code);
   result.setresult(openid);
   result.setmessage("后台收到并返回");
  }else{
   result.setmessage("参数为空");
   result.setsuccess(false);
  }
  return result;
 }
}

到这里 就能得到openid了

总结

以上所述是小编给大家介绍的微信小程序静默登入的实现代码,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网