|
- package com.iformall.controller;
-
- import com.iformall.domain.po.WxAuthorizerInfo;
- import com.iformall.enums.EnumWxAuthorizationStatus;
- import com.iformall.service.WxAuthorizerInfoService;
- import com.iformall.service.wechat.FmOpenService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import me.chanjar.weixin.common.error.WxErrorException;
- import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult;
- import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.*;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.util.Date;
-
- /**
- * Stormeye Wu
- */
- @Controller
- @RequestMapping("/wt_auth")
- @Api(description = "微信第三方开放平台授权相关接口")
- public class WechatAuthController {
- private final Logger logger = LoggerFactory.getLogger(getClass());
- @Autowired
- private FmOpenService openService;
-
- @Autowired
- private WxAuthorizerInfoService authorizerInfoService;
-
- @ApiOperation(value = "获取授权跳转页", notes = "")
- @GetMapping("/goto_auth_url_show")
- @ResponseBody
- public String gotoPreAuthUrlShow() {
- return "<html>" +
- "<body>" +
- "<a href='/O/wt_auth/goto_auth_url'>go</a>" +
- "</body>" +
- "</html>";
- }
-
- @ApiOperation(value = "授权跳转页", notes = "")
- @GetMapping("/goto_auth_url")
- public void gotoPreAuthUrl(HttpServletRequest request, HttpServletResponse response) {
- String host = request.getHeader("host");
- String url = "https://" + host + "/O/wt_auth/jump";
- try {
- url = openService.getWxOpenComponentService().getPreAuthUrl(url);
- response.sendRedirect(url);
- } catch (WxErrorException | IOException e) {
- logger.error("gotoPreAuthUrl", e);
- throw new RuntimeException(e);
- }
- }
-
- @ApiOperation(value = "授权", notes = "")
- @GetMapping("/jump")
- @ResponseBody
- public void jump(@RequestParam("auth_code") String authorizationCode) {
- try {
- WxOpenQueryAuthResult queryAuthResult = openService.getWxOpenComponentService().getQueryAuth(authorizationCode);
- logger.info("getQueryAuth", queryAuthResult);
- WxOpenAuthorizerInfoResult openAuthorizerInfoResult = openService.getWxOpenComponentService().getAuthorizerInfo(
- queryAuthResult.getAuthorizationInfo().getAuthorizerAppid());
- logger.info(openAuthorizerInfoResult.toString());
- // save auth info
- authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){
- {
- setAuthorizerAppid(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAppid());
- setAlias(openAuthorizerInfoResult.getAuthorizerInfo().getAlias());
- setHeadImg(openAuthorizerInfoResult.getAuthorizerInfo().getHeadImg());
- setQrcodeUrl(openAuthorizerInfoResult.getAuthorizerInfo().getQrcodeUrl());
- setRefreshToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerRefreshToken());
- setAccessToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAccessToken());
- setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + openAuthorizerInfoResult.getAuthorizationInfo().getExpiresIn()*1000)));
- setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode());
- setAuthTime(new Date());
- }
- });
- } catch (WxErrorException e) {
- logger.error("gotoPreAuthUrl", e);
- throw new RuntimeException(e);
- }
- }
-
- @ApiOperation(value = "手机跳转链接url", notes = "")
- @GetMapping("/getMobilePreAuthUrl")
- @ResponseBody
- public String getMobilePreAuthUrl(HttpServletRequest request, HttpServletResponse response) {
- String host = request.getHeader("host");
- String url = "https://" + host + "/O/wt_auth/jump";
- try {
- url = openService.getWxOpenComponentService().getMobilePreAuthUrl(url);
- return url;
- } catch (WxErrorException e) {
- logger.error("getMobilePreAuthUrl", e);
- throw new RuntimeException(e);
- }
- }
- }
|