Java实现微信扫码登入的方法
这篇文章将为大家详细讲解有关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?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实现微信扫码登入的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。