APP微信登录---第三方登录

(一)引入maven配置

 <dependency>
      <groupId>com.github.liyiorg</groupId>
      <artifactId>weixin-popular</artifactId>
      <version>2.8.5</version>
    </dependency>

(二)编写controller

  • 前端传递过来一个code字段,popular框架自主完成以下的操作
    @Controller
    @RequestMapping(value = "/weixin")
    public class WeiXinLogin {
        @Autowired
        private UserService userService;
        //固定
        private String appId="wxf51";
        private String appSecret="34b625fa6afd86693325c84";
    
        //访问此资源的url:  http://localhost:8090/weixin/wxLogin.json
        @RequestMapping(value = "/wxLogin", produces = MediaType.APPLICATION_JSON_VALUE)
        public void wxreg(ModelMap result,HttpServletRequest request, String code){
            
            //1,获取凭证信息
            SnsToken token = SnsAPI.oauth2AccessToken(appId, appSecret, code);
            //依据凭证信息判断用户是否用微信注册账户?
            String openid = token.getOpenid();
            System.out.println("+++++++++++++++++++++openId=:"+openid);
            User userLogin = new User();
            userLogin.setOpenId(openid);
            userLogin = userService.getUserByExample(userLogin);
            if (userLogin == null){//用户没有使用微信注册过用户信息
            
                //2,服务器收到用户的登录请求,向微信开放平台发送access_token是否有效的验证请求
                BaseResult baseResult = SnsAPI.auth(token.getAccess_token(), token.getOpenid());
                if("0".equals(baseResult.getErrcode()) && "ok".equals(baseResult.getErrmsg())){
                
                    //3,服务端获取到新的access_token等信息,并返回给客户端,客户端成功登录或者重新获取授权。
                    weixin.popular.bean.user.User user = SnsAPI.userinfo(token.getAccess_token(), token.getOpenid(), "zh-CN");
                    System.out.println("user: " + user.toString());
                    result.put("code",200);
                    result.put("msg","成功获得微信登录信息");
                    result.put("data",user);
                    User userInSert = new User();
                    //待添加其他属性
                    userInSert.setOpenId(user.getOpenid());
                    userInSert.setNickname(user.getNickname());
                    userInSert.setSex(user.getSex());
                    userInSert.setProvince(user.getProvince());
                    userInSert.setCountry(user.getCountry());
                    userInSert.setCity(user.getCity());
                    userInSert.setAvatar(user.getHeadimgurl());
                    userInSert.setLoginName(user.getNickname());
                    userService.addUser(userInSert);//添加该用户到数据库
                    userInSert = userService.getUserByExample(userInSert);
    
                    System.out.println("+++++++++++++++++++userInsert="+userInSert.toString());
    
                    request.getSession().setAttribute("users",userInSert);
                    result.put("code",200);
                    result.put("msg","微信绑定成功!");
                    result.put("data",userInSert);
                }else{
                    result.put("code",302);
                    result.put("msg","获得微信登录用户失败");
                }
            }else{
                request.getSession().setAttribute("users",userLogin);
                System.out.println("登录成功!"+userLogin.toString());
                result.put("code",200);
                result.put("msg","登录成功!");
                result.put("data",userLogin);
            }
        }
    }
原文地址:https://www.cnblogs.com/ncy1/p/9452050.html