|
@@ -3,6 +3,8 @@ package com.sxtvs.open.api.odata.controller;
|
|
import cn.hutool.core.util.IdUtil;
|
|
import cn.hutool.core.util.IdUtil;
|
|
import com.sxtvs.open.api.odata.dto.wx.WxApiCreatePreAuthCodeResponse;
|
|
import com.sxtvs.open.api.odata.dto.wx.WxApiCreatePreAuthCodeResponse;
|
|
import com.sxtvs.open.api.odata.service.OauthService;
|
|
import com.sxtvs.open.api.odata.service.OauthService;
|
|
|
|
+import com.sxtvs.open.core.auth.HttpContextUtil;
|
|
|
|
+import com.sxtvs.open.core.auth.LoginRequired;
|
|
import com.sxtvs.open.core.conf.OauthConfig;
|
|
import com.sxtvs.open.core.conf.OauthConfig;
|
|
import com.sxtvs.open.core.sls.AliyunLogger;
|
|
import com.sxtvs.open.core.sls.AliyunLogger;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
@Controller
|
|
@Controller
|
|
@RequestMapping("oauth")
|
|
@RequestMapping("oauth")
|
|
@@ -26,9 +29,12 @@ public class OauthController {
|
|
private AliyunLogger logger;
|
|
private AliyunLogger logger;
|
|
|
|
|
|
@RequestMapping("douyin/code")
|
|
@RequestMapping("douyin/code")
|
|
|
|
+ @LoginRequired
|
|
public String douyinQrCode() {
|
|
public String douyinQrCode() {
|
|
var state = IdUtil.nanoId();
|
|
var state = IdUtil.nanoId();
|
|
|
|
+ var token = HttpContextUtil.mustToken();
|
|
logger.info("key", "oauth/douyin/code", "state", state);
|
|
logger.info("key", "oauth/douyin/code", "state", state);
|
|
|
|
+ oauthService.saveStateMapping(token, state);
|
|
return "redirect:https://open.douyin.com/platform/oauth/connect/?" +
|
|
return "redirect:https://open.douyin.com/platform/oauth/connect/?" +
|
|
"client_key=awfrca76s1petwh0&response_type=code&" +
|
|
"client_key=awfrca76s1petwh0&response_type=code&" +
|
|
"scope=video.data%2Cfans.list%2Cdata.external.item%2Cdata.external.user%2Cfans.data%2Cvideo.list%2Crenew_refresh_token%2Cuser_info&" +
|
|
"scope=video.data%2Cfans.list%2Cdata.external.item%2Cdata.external.user%2Cfans.data%2Cvideo.list%2Crenew_refresh_token%2Cuser_info&" +
|
|
@@ -37,7 +43,8 @@ public class OauthController {
|
|
|
|
|
|
@RequestMapping("douyin/callback")
|
|
@RequestMapping("douyin/callback")
|
|
public String douyinCallback(String code, String state) {
|
|
public String douyinCallback(String code, String state) {
|
|
- logger.info("key", "oauth/douyin/callback", "code", code, "state", state);
|
|
|
|
|
|
+ var token = oauthService.loadStateMapping(state);
|
|
|
|
+ logger.info("key", "oauth/douyin/callback", "code", code, "state", state, "token", token);
|
|
return "redirect:https://www.baidu.com";
|
|
return "redirect:https://www.baidu.com";
|
|
}
|
|
}
|
|
|
|
|
|
@@ -107,6 +114,7 @@ public class OauthController {
|
|
WxApiCreatePreAuthCodeResponse preAuthCodeResponse = oauthService.createPreAuthCodeResponse();
|
|
WxApiCreatePreAuthCodeResponse preAuthCodeResponse = oauthService.createPreAuthCodeResponse();
|
|
ModelAndView view = new ModelAndView();
|
|
ModelAndView view = new ModelAndView();
|
|
view.setViewName("weixin-code");
|
|
view.setViewName("weixin-code");
|
|
|
|
+ // 这里使用预授权码跟用户token做一个映射
|
|
view.addObject("pre_auth_code", preAuthCodeResponse.getPreAuthCode());
|
|
view.addObject("pre_auth_code", preAuthCodeResponse.getPreAuthCode());
|
|
return view;
|
|
return view;
|
|
}
|
|
}
|