使用微信进行第三方登录总共分为三步;
准备:在微信开发平台,创建网站应用
appId值,appsecret值和回调域名
1.获取code
- 1). 首先展示二维码,让用户进行扫描授权
两种方式(选一):- 直接使用a标签进行链接二维码(方便)
- 我们要填写的信息有:
- appId(微信开发平台创建应用后提供)
- redirect_uri(回调域名,必须是开发平台的创建应用的回调域名之下)
- state(唯一凭证,随便填)
- 我们要填写的信息有:
- 直接使用a标签进行链接二维码(方便)
//请求路径,需更改 微信登录 - 跳转自定义页面进行二维码展示
定义一个a标签跳转到自定义的页面,在页面导入js文件- 我们要填写的信息有:
- id(二维码展示的容器)
- appId(微信开发平台创建应用后提供)
- redirect_uri(回调域名,必须是开发平台的创建应用的回调域名之下)
- state(唯一凭证,随便填)
- style(二维码样式,已填)
- href(样式,不填)
- 我们要填写的信息有:
2.在回调中根据code获取token和openid并获取微信用户信息
- 1). 准备java发送http请求的工具类
org.apache.httpcomponents httpclient 4.5.7 //阿里的json转换工具 com.alibaba fastjson 1.2.4 public static String get(String uri){ CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet get = new HttpGet(uri); CloseableHttpResponse response = null; try { response = httpClient.execute(get); int statusCode = response.getStatusLine().getStatusCode(); if(statusCode==200){ HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity,"UTF-8"); return result; }else { return null; } }catch (Exception e){ e.printStackTrace(); } return null; } - 2). 准备url请求
//获取token和openid请求路径,需更改其APPID和密钥,其他的代码中动态修改 public String GETTOKEN = "" + "https://api.weixin..com/sns/oauth2/access_token?appid=应用ID&secret=应用密钥&code=CODE&grant_type=authorization_code"; //用户信息请求路径,代码中动态修改 public String USERINFO = "" + "https://api.weixin..com/sns/userinfo?access_token=TOKEN&openid=OPENID" - 3). 最终集成的回调后台代码:
@RequestMapping("/callBack") public ModelAndView callBack(String code, String state){ //回调获得code,通过用户授权的code去获取微信令牌 String token = HttpClientUtil.get(GETTOKEN.replaceAll("CODE", code)); Map map = JSON.parseObject(token); //获取到了关键的令牌和openid后, //就可以正式开始查询微信用户的信息,完成我们要做的微信绑定 String access_token = (String) map.get("access_token"); String openid = (String) map.get("openid"); String userInfo = HttpClientUtil.get(USERINFO.replaceAll("TOKEN", access_token).replaceAll("OPENID", openid)); Map info = JSON.parseObject(userInfo); //返回一个登录成功后的页面,携带微信用户信息 return new ModelAndView("personal","userInfo",info); } - 4). 登录成功后的页面代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 微信名称:${ userInfo.nickname} 微信头像:<img src="${userInfo.headimgurl}"/> </body> </html> 最后在页面看到微信登录成功后的信息

这样我们就得到了微信登录用户的个人信息,完成微信第三方登录!
项目Demo地址:https://github.com/wl1006/WeChat-Login-Demo
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220823.html原文链接:https://javaforall.net
