zoukankan      html  css  js  c++  java
  • 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);
              }
          }
      }
  • 相关阅读:
    Django 自带密码加密,自定密码加密方式 及自定义验证方式
    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
    Django中请求的生命周期
    Django---ORM操作大全
    Django----中间件详解
    Delphi 使用Query组件的SQL查询
    Delphi 使用Tabel组件的记录查找
    Delphi 字段的操作
    Delphi 使用数据库浏览器
    Delphi 建立ODBC数据源
  • 原文地址:https://www.cnblogs.com/ncy1/p/9452050.html
Copyright © 2011-2022 走看看