上一篇写了微信PC端登陆,这篇来说下小程序的JAVA登陆,流程不太相同,小程序的相对简单前端
PC端登陆能够看一下个人另外一篇文章 : 微信登陆-PC端版本json
老规矩,直接贴代码小程序
/** * @Author : Yanqiang * @Date : 2019/4/9 * @Param : [code, fullUserInfo, source] * @return : com.jld.passport.common.BaseResult * @Description : * * 前端请求到这个接口的时候,就已经拿到用户的基本信息了,用code + APPID + Secret 去请求登陆接口 */ public BaseResult login(String code, JSONObject fullUserInfo, int source) { BaseResult baseResult = new BaseResult(); //组装返回数据 String loginUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={APPID}&secret={SECRET}&js_code={CODE}&grant_type=authorization_code"; //userInfo信息,从这里面拿到用户信息 JSONObject userInfo = (JSONObject) fullUserInfo.get("userInfo"); //区分不一样小程序的appid if (source == 1){ //小程序 loginUrl = loginUrl.replace("{APPID}","微信发放的APPID") .replace("{SECRET}","微信发放的Secret") .replace("{CODE}",code); }else if (source == 2){ //App loginUrl = loginUrl.replace("{APPID}","微信发放的APPID") .replace("{SECRET}","微信发放的Secret") .replace("{CODE}",code); }else if (source == 3){ //公众号 loginUrl = loginUrl.replace("{APPID}","微信发放的APPID") .replace("{SECRET}","微信发放的Secret") .replace("{CODE}",code); } log.info("请求微信登陆url:"+loginUrl); JSONObject jsonData = CommonUtil.httpsRequest(loginUrl, EnumMethod.GET.name(), null); log.info("请求微信登陆返回data:"+jsonData); //不要用微信文档上的那些code作判断!!! 根本不许, String wxUnionId = (String) jsonData.get("unionid"); if (wxUnionId != null){ //请求成功 String openid = (String) jsonData.get("openid"); //业务处理.... }else { //请求失败 JldUtils.setStatus(baseResult, StatusCode.USER_LOGIN_FAIL_ERROR); } //wxUnionId; 执行登陆记录(0登陆/1登出); source登陆来源(1小程序/2App/3公众号/4 PC) int a =insertLoginLog(wxUnionId,0,source); return baseResult; }