欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java实现微信扫码登入的实例代码

程序员文章站 2023-10-28 08:20:34
微信扫码登入首先去通过微信开放平台做好开发者资质认证,创建网站应用然后等待审核开发者资质认证网站应用审核通过的话就是这个样子 还有最底下的授权回调地址 (www.xxxxx.com) 填写域名即可po...

微信扫码登入

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

开发者资质认证

Java实现微信扫码登入的实例代码

网站应用

Java实现微信扫码登入的实例代码

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

Java实现微信扫码登入的实例代码

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>

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

Java实现微信扫码登入的实例代码

 /**
  * 获取微信登陆二维码地址
  * @return
  */
 @requestmapping(value = "/getqrcodeurl",method = requestmethod.post)
 public message getqrcodeurl() {
  logger.info("获取二维码地址");
  try {
   string codeurl = wechatservice.getqrcodeurl();
   logger.info("codeurl:"+codeurl);
   return new message(responseenum.success,codeurl);
  }catch (exception e){
   logger.error(e.tostring()+e);
   return new message(responseenum.fall);
  }
 }
 @override
 public string getqrcodeurl() {
  // 生成 state 参数,用于防止 csrf
  string date = dateutil.format(new date(), "yyyymmdd");
  string state = md5utils.generate(csrf_key + date);
  return wxmpservice.buildqrconnecturl(wxredirecturl,"snsapi_login", state);
 }
  • 是你网站应用里面的 redirect_uri 你设置的授权回调地址 scope网站扫码登入为snsapi_login即可 state。微信开放平台文档文档写的很详细,看不懂看文档
  • 用户扫码成功之后微信会回调你设置的回调地址 获取二维码连接
 /**
  * 回调地址
  * @param code
  * @param state
  * @return
  */
 @requestmapping(value = "/wxcallback",method = requestmethod.post)
 public message wxcallback(httpservletrequest request, httpservletresponse response,
   @requestparam(name = "code",defaultvalue = "") string code, @requestparam(name = "state",defaultvalue = "")string state) {
  if(stringutils.isblank(code)){
   return new message(responseenum.essential_is_null);
  }
  if(stringutils.isblank(state)){
   return new message(responseenum.essential_is_null);
  }
  logger.info("微信回调------------");
  logger.info(code+"------"+state);
  try {
   message message=wechatservice.wxcallback(request,code, state);
   return message;
  }catch (exception e){
   logger.error(e.tostring()+"\n"+e);
   return new message(responseenum.fall);
  }
 }
@override
 public message wxcallback(httpservletrequest request, string code, string state) {
  string openid = null;
  if (code != null) {
   // 获取 openid
   try {
    wxmpoauth2accesstoken accesstoken = wxmpservice.oauth2getaccesstoken(code);
    if (accesstoken == null) {
     return new message(responseenum.data_is_null);
    }
    openid = accesstoken.getopenid();
    log.info("openid:" + openid);
    /*token = accesstoken.getaccesstoken();*/
     wxmpuser wxuser = wxmpservice.oauth2getuserinfo(accesstoken, null);
     log.info(wxuser.tostring());
   	  return new message(responseenum.wechat_not_bingding, wxuser);
   } catch (wxerrorexception e) {
    log.error(e.getmessage(), e);
    return new message(responseenum.fall);
   }
  }
  return new message(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实现微信扫码登入的实例代码的文章就介绍到这了,更多相关java微信扫码登入内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!