• 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);
              }
          }
      }
  • 相关阅读:
    Java面试集合(一)
    Java面试集合(一)
    Android-如何显示版本号并制作3秒跳转页
    Android-如何显示版本号并制作3秒跳转页
    安卓入门教程(十五)- Fragment,Service,WAMP下载
    安卓入门教程(十五)- Fragment,Service,WAMP下载
    网络开发Socket和ServerSocket
    网络开发Socket和ServerSocket
    深入浅出的Java网络通信
    深入浅出的Java网络通信
  • 原文地址:https://www.cnblogs.com/ncy1/p/9452050.html
Copyright © 2020-2023  润新知