(一)引入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); } } }