
我们以gitee为例子,在个人设置中找到第三方应用。
创建应用
填写申请第三方应用

获取这两个关键密文

-
me.zhyd.oauth -
JustAuth -
1.16.5 -
org.springframework.boot -
spring-boot-starter-thymeleaf
- spring.thymeleaf.cache=false
- spring.thymeleaf.prefix=classpath:/templates/
- spring.thymeleaf.suffix=.html
- gitee.ClientID=139dd95598cb6539e2e79edfdc67f29acf8ea52bbaa2f45c204efdb0d9bc0e24
- gitee.ClientSecret=f0158ab4d918dd2f9b8d2c427bed5ecfbb1c1ddf8941c519108ce33a17fc3bd9
-
-
- import java.io.Serializable;
- @Data
- public class ResponseResult
implements Serializable { - private Boolean success;
- private Integer code;
- private String msg;
- private T data;
-
- public static ResponseResult ok(Object data) {
- ResponseResult result = new ResponseResult();
- result.setData(data);
- return result;
- }
-
- }
通过这个login-controller跳转到login页面
- @Controller
- @RequestMapping("/login")
- public class LoginController {
- @RequestMapping("/home")
- public String login(Model model){
- return "login";
- }
- }
在这个页面点击gitee登录可以返回后端接口,后端接口再跳转gitee授权页面,返回数据给前端
- <!DOCTYPE html>
- <html lang="en" xmlns:th="http://www.thymeleaf.org">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <script type="text/javascript" src="/js/jquery-3.5.1.min.js"></script>
- </head>
- <body>
- <button id="bg">使用gitee登录</button>
- </body>
- <script type="text/javascript">
- $(function(){
- $("#bg").click(function(){
- $.get("/login-before",function(data,status){
- window.location=data.data.authorizePageUrl;
- });
- });
- });
- </script>
- </html>
后端完成获取授权码,发送授权码获取用户基本信息等操作
- import com.example.demo.util.ResponseResult;
- import me.zhyd.oauth.config.AuthConfig;
- import me.zhyd.oauth.model.AuthCallback;
- import me.zhyd.oauth.model.AuthResponse;
- import me.zhyd.oauth.request.AuthGiteeRequest;
- import me.zhyd.oauth.request.AuthRequest;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
-
- @RestController
- public class Oauth2Controller {
-
- @Value("${gitee.ClientID}")
- private String clientID;
- @Value("${gitee.ClientSecret}")
- private String clientSecret;
-
- private static final Logger LOG = LoggerFactory.getLogger(Oauth2Controller.class);
- @GetMapping("/login-before")
- public ResponseResult loginBeforByGitee(){
- // 创建授权request
- AuthRequest authRequest = getAuthRequest();
- String stateId = UUID.randomUUID().toString();
- LOG.info("stateId = " + stateId);
- // 跳转到授权页面
- String authorizePageUrl = authRequest.authorize(stateId);
- LOG.info("authorizePageUrl地址为"+authorizePageUrl);
- Map map = new HashMap<>();
- map.put("authorizePageUrl",authorizePageUrl);
- return ResponseResult.ok(map);
- }
- @GetMapping("/callback")
- public ResponseResult callback(String code,String state) {
- // gitee授权通过跳转到回调接口
- LOG.info("code = " + code);
- LOG.info("state = " + state);
- // 使用这个code去获取用户基本信息
- AuthResponse login = getAuthRequest().login(AuthCallback.builder().state(state).code(code).build());
- // 数据返回给前端
- return ResponseResult.ok(login);
- }
-
- private AuthRequest getAuthRequest(){
- // 创建授权request
- AuthRequest authRequest = new AuthGiteeRequest(AuthConfig.builder()
- .clientId(clientID)
- .clientSecret(clientSecret)
- .redirectUri("http://127.0.0.1:7125/callback")
- .build());
- return authRequest;
- }
-
- }
访问localhost:7125/login/home

前端获取到基本信息
