这篇文章将为大家详细讲解有关Java实现微信扫码登入的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

微信扫码登入

首先去通过微信开放平台做好开发者资质认证,创建网站应用然后等待审核

开发者资质认证

网站应用

审核通过的话就是这个样子 还有最底下的授权回调地址 (www.xxxxx.com) 填写域名即可

pom

<!--WeChatQrCode--><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.4.0</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>RELEASE</version><scope>compile</scope></dependency>

第一步 用户通过点击事件获取到微信二维码连接

/***获取微信登陆二维码地址*@return*/@RequestMapping(value="/getQRCodeUrl",method=RequestMethod.POST)publicMessagegetQRCodeUrl(){logger.info("获取二维码地址");try{StringcodeUrl=weChatService.getQRCodeUrl();logger.info("codeUrl:"+codeUrl);returnnewMessage(ResponseEnum.SUCCESS,codeUrl);}catch(Exceptione){logger.error(e.toString()+e);returnnewMessage(ResponseEnum.FALL);}}

@OverridepublicStringgetQRCodeUrl(){//生成state参数,用于防止csrfStringdate=DateUtil.format(newDate(),"yyyyMMdd");Stringstate=MD5Utils.generate(CSRF_KEY+date);returnwxMpService.buildQrConnectUrl(wxRedirectUrl,"snsapi_login",state);}

https://open.weixin.qq.com/connect/qrconnect&#63;appid=xxxx&redirect_uri=xxxxxx&response_type=code&scope=snsapi_login&state=e97555458779708b99b9d40cb49f54245c7500e536445d32#wechat_redirect

appid 是你网站应用里面的 redirect_uri 你设置的授权回调地址 scope网站扫码登入为snsapi_login即可 state。微信开放平台文档文档写的很详细,看不懂看文档

用户扫码成功之后微信会回调你设置的回调地址 获取二维码连接

/***回调地址*@paramcode*@paramstate*@return*/@RequestMapping(value="/wxCallBack",method=RequestMethod.POST)publicMessagewxCallBack(HttpServletRequestrequest,HttpServletResponseresponse,@RequestParam(name="code",defaultValue="")Stringcode,@RequestParam(name="state",defaultValue="")Stringstate){if(StringUtils.isBlank(code)){returnnewMessage(ResponseEnum.ESSENTIAL_IS_NULL);}if(StringUtils.isBlank(state)){returnnewMessage(ResponseEnum.ESSENTIAL_IS_NULL);}logger.info("微信回调------------");logger.info(code+"------"+state);try{Messagemessage=weChatService.wxCallBack(request,code,state);returnmessage;}catch(Exceptione){logger.error(e.toString()+"\n"+e);returnnewMessage(ResponseEnum.FALL);}}

@OverridepublicMessagewxCallBack(HttpServletRequestrequest,Stringcode,Stringstate){StringopenId=null;if(code!=null){//获取openidtry{WxMpOAuth3AccessTokenaccessToken=wxMpService.oauth3getAccessToken(code);if(accessToken==null){returnnewMessage(ResponseEnum.DATA_IS_NULL);}openId=accessToken.getOpenId();log.info("openId:"+openId);/*token=accessToken.getAccessToken();*/WxMpUserwxUser=wxMpService.oauth3getUserInfo(accessToken,null);log.info(wxUser.toString());returnnewMessage(ResponseEnum.WECHAT_NOT_BINGDING,wxUser);}catch(WxErrorExceptione){log.error(e.getMessage(),e);returnnewMessage(ResponseEnum.FALL);}}returnnewMessage(ResponseEnum.FALL);}

前端请求

$("#weiLog").click(function(){$.ajax({type:"POST",url:"/api/wx/getQRCodeUrl",dataType:'json',success:function(result){//console.log(result);if(result.code==0){this.itop=(window.screen.availHeight-500)/2;//获得窗口的水平位置this.ileft=(window.screen.availWidth-400)/2;this.w=window.open(result.data,"newwindow","height=500,width=600,top="+this.itop+",left="+this.ileft+",toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");}}});});

关于Java实现微信扫码登入的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。