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);
            }
        }
    }

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM