上一篇寫了微信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; }