cl
2024-01-22 8de0bed14d364e3d3adae6b6e2260b838d180c23
提交 | 用户 | 时间
71e81e 1 package cn.stylefeng.guns.oauth2.factory;
2
3 import cn.stylefeng.roses.core.util.ToolUtil;
4 import cn.stylefeng.roses.kernel.model.exception.ServiceException;
5 import me.zhyd.oauth.config.AuthConfig;
6 import me.zhyd.oauth.exception.AuthException;
7 import me.zhyd.oauth.request.*;
8
9 /**
10  * OAuth2 请求的构建器
11  *
12  * @author fengshuonan
13  * @Date 2019/6/9 16:49
14  */
15 public class OAuthRequestFactory {
16
17     /**
18      * 服务器基础地址
19      */
20     private static final String BASE_URL = "http://localhost";
21
22     /**
23      * 根据具体的授权来源,获取授权请求工具类
24      *
25      * @author fengshuonan
26      * @Date 2019/6/9 16:49
27      */
28     public static AuthRequest getAuthRequest(String source) {
29         AuthRequest authRequest = null;
30         switch (source) {
31             case "qq":
32                 String qqClinetId = "";
33                 String qqSecret = "";
34                 if (ToolUtil.isOneEmpty(qqClinetId, qqSecret)) {
35                     throw new ServiceException(500, "请先设置qq第三方应用秘钥!");
36                 }
37
38                 authRequest = new AuthQqRequest(AuthConfig.builder()
39                         .clientId(qqClinetId)
40                         .clientSecret(qqSecret)
41                         .redirectUri(BASE_URL + "/oauth/callback/qq")
42                         .build());
43                 break;
44             case "gitee":
45                 String giteeClinetId = "";
46                 String giteeSecret = "";
47                 if (ToolUtil.isOneEmpty(giteeClinetId, giteeSecret)) {
48                     throw new ServiceException(500, "请先设置码云第三方应用秘钥!");
49                 }
50
51                 authRequest = new AuthGiteeRequest(AuthConfig.builder()
52                         .clientId(giteeClinetId)
53                         .clientSecret(giteeSecret)
54                         .redirectUri(BASE_URL + "/oauth/callback/gitee")
55                         .build());
56                 break;
57             case "dingtalk":
58                 authRequest = new AuthDingTalkRequest(AuthConfig.builder()
59                         .clientId("")
60                         .clientSecret("")
61                         .redirectUri(BASE_URL + "/oauth/callback/dingtalk")
62                         .build());
63                 break;
64             case "baidu":
65                 authRequest = new AuthBaiduRequest(AuthConfig.builder()
66                         .clientId("")
67                         .clientSecret("")
68                         .redirectUri(BASE_URL + "/oauth/callback/baidu")
69                         .build());
70                 break;
71             case "github":
72                 authRequest = new AuthGithubRequest(AuthConfig.builder()
73                         .clientId("")
74                         .clientSecret("")
75                         .redirectUri(BASE_URL + "/oauth/callback/github")
76                         .build());
77                 break;
78             case "weibo":
79                 authRequest = new AuthWeiboRequest(AuthConfig.builder()
80                         .clientId("")
81                         .clientSecret("")
82                         .redirectUri(BASE_URL + "/oauth/callback/weibo")
83                         .build());
84                 break;
85             case "coding":
86                 authRequest = new AuthCodingRequest(AuthConfig.builder()
87                         .clientId("")
88                         .clientSecret("")
89                         .redirectUri(BASE_URL + "/oauth/callback/tencentCloud")
90                         .build());
91                 break;
92             case "tencentCloud":
93                 authRequest = new AuthTencentCloudRequest(AuthConfig.builder()
94                         .clientId("")
95                         .clientSecret("")
96                         .redirectUri(BASE_URL + "/oauth/callback/tencentCloud")
97                         .build());
98                 break;
99             case "oschina":
100                 authRequest = new AuthOschinaRequest(AuthConfig.builder()
101                         .clientId("")
102                         .clientSecret("")
103                         .redirectUri(BASE_URL + "/oauth/callback/oschina")
104                         .build());
105                 break;
106             case "alipay":
107                 // 支付宝在创建回调地址时,不允许使用localhost或者127.0.0.1,所以这儿的回调地址使用的局域网内的ip
108                 authRequest = new AuthAlipayRequest(AuthConfig.builder()
109                         .clientId("")
110                         .clientSecret("")
111                         .alipayPublicKey("")
112                         .redirectUri(BASE_URL + "/oauth/callback/alipay")
113                         .build());
114                 break;
115             case "wechat":
116                 authRequest = new AuthWeChatRequest(AuthConfig.builder()
117                         .clientId("")
118                         .clientSecret("")
119                         .redirectUri(BASE_URL + "/oauth/callback/wechat")
120                         .build());
121                 break;
122             case "csdn":
123                 authRequest = new AuthCsdnRequest(AuthConfig.builder()
124                         .clientId("")
125                         .clientSecret("")
126                         .redirectUri(BASE_URL + "/oauth/callback/wechat")
127                         .build());
128                 break;
129             case "taobao":
130                 authRequest = new AuthTaobaoRequest(AuthConfig.builder()
131                         .clientId("")
132                         .clientSecret("")
133                         .redirectUri(BASE_URL + "/oauth/callback/taobao")
134                         .build());
135                 break;
136             case "google":
137                 authRequest = new AuthGoogleRequest(AuthConfig.builder()
138                         .clientId("")
139                         .clientSecret("")
140                         .redirectUri(BASE_URL + "/oauth/callback/google")
141                         .build());
142                 break;
143             case "facebook":
144                 authRequest = new AuthFacebookRequest(AuthConfig.builder()
145                         .clientId("")
146                         .clientSecret("")
147                         .redirectUri(BASE_URL + "/oauth/callback/facebook")
148                         .build());
149                 break;
150         }
151
152         if (null == authRequest) {
153             throw new AuthException("未获取到有效的Auth配置");
154         }
155
156         return authRequest;
157     }
158
159 }