基于springboot框架的微信公众号基础开发(二)----用户授权和微信公众号登录。

基于springboot框架的微信公众号基础开发(二)----用户授权和微信公众号登录。
转载需注明:https://blog.csdn.net/juan1997/article/details/90645553

 /**
	 * 一、第一步:用户同意授权,获取code code说明 :
	 * code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
	 * 
	 * @param returnUrl
	 * @return
	 */
	@GetMapping("/authorize")
	public String authorize(@RequestParam("returnUrl") String returnUrl) {
		// String url = "http://www.lovezhj.cn";
		String url = returnUrl;
		String redirectURL = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO,
				URLEncoder.encode(returnUrl));
		log.info("【微信网页授权】获取code,redirectURL={}", redirectURL);
		return returnUrl;

	}
/**
	 * 微信公众号登录
	 * 
	 * @param code
	 * @param state
	 * @return
	 * @throws Exception
	 */
	@GetMapping("/login")
	public R login(@RequestParam("code") String code, @RequestParam("state") String state) throws Exception {
		R result = null;
		log.info("【微信网页授权】code={}", code);
		log.info("【微信网页授权】state={}", state);
		WxMpOAuth2AccessToken wxMpOAuth2AccessToken;
		try {
			// 第二步:通过code换取网页授权access_token
			// 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
			wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
		} catch (WxErrorException e) {
			log.info("【微信网页授权异常】{}", e);
			throw new Exception(e.getError().getErrorMsg());
		}
		// 第三步:刷新token(如果有需要的时候)
		// 第四步: 用oauth2获取用户信息.拉取用户信息(需scope为 snsapi_userinfo)
		WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);

		return result;
	}	

你可能感兴趣的:(微信公众开发基础)