微信網頁授權訪問實現方式,根據授權獲取微信openid_新維護
阿新 • • 發佈:2021-02-09
基於很多年前才開始研究微信公眾號的時候寫的微信鑑權,現在重新補一版本
1.引入微信API開發工具包
gradle:引入
compile group: 'com.github.binarywang', name: 'weixin-java-mp', version: '3.2.0'
這個是開源的微信開發工具包,封裝了很多api,如果沒有的介面也可以呼叫其get()和post()方法自己傳url呼叫,此框架最大的好處是,呼叫介面只傳入微信appid,開發工具包自動快取了
token資訊,不用本地快取。
舉例:網頁授權的url組裝
/** * 微信獲取基本資訊url * 時間:2018/8/10 * * @param * @param * @return */ @GetMapping(value = "/getInfo/{appid}") public ModelAndView createUrl(@PathVariable final String appid) { ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); String url = ""; try { if (servletRequestAttributes != null) { url = WxMpConfiguration.getMpServices().get(appid).oauth2buildAuthorizationUrl(String.format("%s/wx/redirect/%s/greet", redirectUrl, appid), WxConsts.OAuth2Scope.SNSAPI_USERINFO, System.currentTimeMillis() + ""); } } catch (Exception e) { e.printStackTrace(); } return new ModelAndView("redirect:" + url); }
選單直接呼叫該方法,只需傳入appid,主要是學會呼叫微信工具組裝url的方法,所有的方法都是WxMpConfiguration.getMpServices().get(appid)的WxMpService介面開始呼叫的,比如組裝網頁授權地址就呼叫
oauth2buildAuthorizationUrl(String redirectURI, String scope, String state)方法返回網頁授權地址,此方法返回的url微信會向重定向的地址介面拼裝code引數作為驗證。本文跳轉地址如下:
獲取使用者openid和暱稱
@GetMapping("/greet") public void greetUser(@PathVariable final String appid, String code) { try { logger.info("重定向code:" + code); if (StringUtils.isBlank(code)) { logger.info("重定向code為null"); return; } WxMpService mpService = WxMpConfiguration.getMpServices().get(appid); //獲取token WxMpOAuth2AccessToken accessToken = mpService.oauth2getAccessToken(code); //獲取使用者資訊包括openid WxMpUser user = mpService.oauth2getUserInfo(accessToken, null); logger.info("使用者的openid:{}",user.getOpenId()); logger.info("使用者的暱稱:{}",user.getNickname()); } catch (Exception e) { e.printStackTrace(); } }
總結:微信使用者鑑權到此結束,還要小程式,微信企業號,歡迎諮詢探討。