UrlBuilder.java 14.5 KB
Newer Older
智布道's avatar
智布道 已提交
1 2
package me.zhyd.oauth.utils;

智布道's avatar
智布道 已提交
3
import me.zhyd.oauth.consts.ApiUrl;
智布道's avatar
智布道 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

import java.text.MessageFormat;

/**
 * Url构建工具类
 *
 * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
 * @version 1.0
 * @website https://www.zhyd.me
 * @date 2019/1/31 12:26
 * @since 1.0
 */
public class UrlBuilder {

    private static final String GITHUB_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&code={3}&redirect_uri={4}";
智布道's avatar
智布道 已提交
19
    private static final String GITHUB_USER_INFO_PATTERN = "{0}?access_token={1}";
智布道's avatar
智布道 已提交
20 21 22
    private static final String GITHUB_AUTHORIZE_PATTERN = "{0}?client_id={1}&state=1&redirect_uri={2}";

    private static final String WEIBO_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}";
23
    private static final String WEIBO_USER_INFO_PATTERN = "{0}?{1}";
智布道's avatar
智布道 已提交
24 25 26 27 28 29
    private static final String WEIBO_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}";

    private static final String GITEE_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}";
    private static final String GITEE_USER_INFO_PATTERN = "{0}?access_token={1}";
    private static final String GITEE_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}";

智布道's avatar
智布道 已提交
30 31 32
    private static final String DING_TALK_QRCONNECT_PATTERN = "{0}?appid={1}&response_type=code&scope=snsapi_login&state=STATE&redirect_uri={2}";
    private static final String DING_TALK_USER_INFO_PATTERN = "{0}?signature={1}&timestamp={2}&accessKey={3}";

33 34 35 36 37
    private static final String BAIDU_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}";
    private static final String BAIDU_USER_INFO_PATTERN = "{0}?access_token={1}";
    private static final String BAIDU_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&display=popup";
    private static final String BAIDU_REVOKE_PATTERN = "{0}?access_token={1}";

38 39 40 41 42 43
    private static final String CSDN_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}";
    private static final String CSDN_USER_INFO_PATTERN = "{0}?access_token={1}";
    private static final String CSDN_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}";

    private static final String CODING_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}";
    private static final String CODING_USER_INFO_PATTERN = "{0}?access_token={1}";
44 45 46 47 48
    private static final String CODING_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&scope=user";

    private static final String TENCENT_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}";
    private static final String TENCENT_USER_INFO_PATTERN = "{0}?access_token={1}";
    private static final String TENCENT_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&scope=user";
49 50 51 52 53

    private static final String OSCHINA_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}&redirect_uri={4}&dataType=json";
    private static final String OSCHINA_USER_INFO_PATTERN = "{0}?access_token={1}&dataType=json";
    private static final String OSCHINA_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}";

智布道's avatar
智布道 已提交
54 55 56 57 58 59 60
    /**
     * 获取githubtoken的接口地址
     *
     * @param clientId     github应用的Client ID
     * @param clientSecret github应用的Client Secret
     * @param code         github授权前的code,用来换token
     * @param redirectUri  待跳转的页面
智布道's avatar
智布道 已提交
61
     * @return full url
智布道's avatar
智布道 已提交
62 63
     */
    public static String getGithubAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) {
智布道's avatar
智布道 已提交
64
        return MessageFormat.format(GITHUB_ACCESS_TOKEN_PATTERN, ApiUrl.GITHUB.accessToken(), clientId, clientSecret, code, redirectUri);
智布道's avatar
智布道 已提交
65 66 67 68 69 70
    }

    /**
     * 获取github用户详情的接口地址
     *
     * @param token github 应用的token
智布道's avatar
智布道 已提交
71
     * @return full url
智布道's avatar
智布道 已提交
72 73
     */
    public static String getGithubUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
74
        return MessageFormat.format(GITHUB_USER_INFO_PATTERN, ApiUrl.GITHUB.userInfo(), token);
智布道's avatar
智布道 已提交
75 76 77 78 79 80 81
    }

    /**
     * 获取github授权地址
     *
     * @param clientId    github 应用的Client ID
     * @param redirectUrl github 应用授权成功后的回调地址
智布道's avatar
智布道 已提交
82
     * @return full url
智布道's avatar
智布道 已提交
83 84
     */
    public static String getGithubAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
85
        return MessageFormat.format(GITHUB_AUTHORIZE_PATTERN, ApiUrl.GITHUB.authorize(), clientId, redirectUrl);
智布道's avatar
智布道 已提交
86 87 88 89 90 91 92 93 94
    }

    /**
     * 获取weibo token的接口地址
     *
     * @param clientId     weibo应用的App Key
     * @param clientSecret weibo应用的App Secret
     * @param code         weibo授权前的code,用来换token
     * @param redirectUri  待跳转的页面
智布道's avatar
智布道 已提交
95
     * @return full url
智布道's avatar
智布道 已提交
96 97
     */
    public static String getWeiboAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) {
智布道's avatar
智布道 已提交
98
        return MessageFormat.format(WEIBO_ACCESS_TOKEN_PATTERN, ApiUrl.WEIBO.accessToken(), clientId, clientSecret, code, redirectUri);
智布道's avatar
智布道 已提交
99 100 101 102 103 104
    }

    /**
     * 获取weibo用户详情的接口地址
     *
     * @param token weibo 应用的token
智布道's avatar
智布道 已提交
105
     * @return full url
智布道's avatar
智布道 已提交
106
     */
107
    public static String getWeiboUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
108
        return MessageFormat.format(WEIBO_USER_INFO_PATTERN, ApiUrl.WEIBO.userInfo(), token);
智布道's avatar
智布道 已提交
109 110 111 112 113 114 115
    }

    /**
     * 获取weibo授权地址
     *
     * @param clientId    weibo 应用的Client ID
     * @param redirectUrl weibo 应用授权成功后的回调地址
智布道's avatar
智布道 已提交
116
     * @return full url
智布道's avatar
智布道 已提交
117 118
     */
    public static String getWeiboAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
119
        return MessageFormat.format(WEIBO_AUTHORIZE_PATTERN, ApiUrl.WEIBO.authorize(), clientId, redirectUrl);
智布道's avatar
智布道 已提交
120 121 122 123 124 125 126 127 128
    }

    /**
     * 获取gitee token的接口地址
     *
     * @param clientId     gitee应用的Client ID
     * @param clientSecret gitee应用的Client Secret
     * @param code         gitee授权前的code,用来换token
     * @param redirectUri  待跳转的页面
智布道's avatar
智布道 已提交
129
     * @return full url
智布道's avatar
智布道 已提交
130 131
     */
    public static String getGiteeAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) {
智布道's avatar
智布道 已提交
132
        return MessageFormat.format(GITEE_ACCESS_TOKEN_PATTERN, ApiUrl.GITEE.accessToken(), clientId, clientSecret, code, redirectUri);
智布道's avatar
智布道 已提交
133 134 135 136 137 138
    }

    /**
     * 获取gitee用户详情的接口地址
     *
     * @param token gitee 应用的token
智布道's avatar
智布道 已提交
139
     * @return full url
智布道's avatar
智布道 已提交
140 141
     */
    public static String getGiteeUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
142
        return MessageFormat.format(GITEE_USER_INFO_PATTERN, ApiUrl.GITEE.userInfo(), token);
智布道's avatar
智布道 已提交
143 144 145 146 147 148 149 150 151 152
    }

    /**
     * 获取gitee授权地址
     *
     * @param clientId    gitee 应用的Client ID
     * @param redirectUrl gitee 应用授权成功后的回调地址
     * @return json
     */
    public static String getGiteeAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
153
        return MessageFormat.format(GITEE_AUTHORIZE_PATTERN, ApiUrl.GITEE.authorize(), clientId, redirectUrl);
智布道's avatar
智布道 已提交
154
    }
智布道's avatar
智布道 已提交
155 156 157 158 159 160 161 162 163

    /**
     * 获取钉钉登录二维码的地址
     *
     * @param clientId    钉钉 应用的App Id
     * @param redirectUrl 钉钉 应用授权成功后的回调地址
     * @return full url
     */
    public static String getDingTalkQrConnectUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
164
        return MessageFormat.format(DING_TALK_QRCONNECT_PATTERN, ApiUrl.DINGTALK.authorize(), clientId, redirectUrl);
智布道's avatar
智布道 已提交
165 166 167 168 169 170 171 172 173 174 175
    }

    /**
     * 获取钉钉用户信息的地址
     *
     * @param signature 通过appSecret计算出来的签名值,签名计算方法:https://open-doc.dingtalk.com/microapp/faquestions/hxs5v9
     * @param timestamp 当前时间戳,单位是毫秒
     * @param accessKey 钉钉 应用的App Id
     * @return full url
     */
    public static String getDingTalkUserInfoUrl(String signature, String timestamp, String accessKey) {
智布道's avatar
智布道 已提交
176
        return MessageFormat.format(DING_TALK_USER_INFO_PATTERN, ApiUrl.DINGTALK.userInfo(), signature, timestamp, accessKey);
智布道's avatar
智布道 已提交
177
    }
178 179 180 181 182 183 184 185 186 187 188

    /**
     * 获取baidu token的接口地址
     *
     * @param clientId     baidu应用的API Key
     * @param clientSecret baidu应用的Secret Key
     * @param code         baidu授权前的code,用来换token
     * @param redirectUri  待跳转的页面
     * @return full url
     */
    public static String getBaiduAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) {
智布道's avatar
智布道 已提交
189
        return MessageFormat.format(BAIDU_ACCESS_TOKEN_PATTERN, ApiUrl.BAIDU.accessToken(), clientId, clientSecret, code, redirectUri);
190 191 192 193 194 195 196 197 198
    }

    /**
     * 获取baidu用户详情的接口地址
     *
     * @param token baidu 应用的token
     * @return full url
     */
    public static String getBaiduUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
199
        return MessageFormat.format(BAIDU_USER_INFO_PATTERN, ApiUrl.BAIDU.userInfo(), token);
200 201 202 203 204 205 206 207 208 209
    }

    /**
     * 获取baidu授权地址
     *
     * @param clientId    baidu 应用的API Key
     * @param redirectUrl baidu 应用授权成功后的回调地址
     * @return json
     */
    public static String getBaiduAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
210
        return MessageFormat.format(BAIDU_AUTHORIZE_PATTERN, ApiUrl.BAIDU.authorize(), clientId, redirectUrl);
211 212 213 214 215 216 217 218 219
    }

    /**
     * 获取收回baidu授权的地址
     *
     * @param accessToken baidu授权登录后的token
     * @return json
     */
    public static String getBaiduRevokeUrl(String accessToken) {
智布道's avatar
智布道 已提交
220
        return MessageFormat.format(BAIDU_REVOKE_PATTERN, ApiUrl.BAIDU.revoke(), accessToken);
221
    }
222 223 224 225 226 227 228 229 230 231 232

    /**
     * 获取csdn token的接口地址
     *
     * @param clientId     csdn应用的App Key
     * @param clientSecret csdn应用的App Secret
     * @param code         csdn授权前的code,用来换token
     * @param redirectUri  待跳转的页面
     * @return full url
     */
    public static String getCsdnAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) {
智布道's avatar
智布道 已提交
233
        return MessageFormat.format(CSDN_ACCESS_TOKEN_PATTERN, ApiUrl.CSDN.accessToken(), clientId, clientSecret, code, redirectUri);
234 235 236 237 238 239 240 241 242
    }

    /**
     * 获取csdn用户详情的接口地址
     *
     * @param token csdn 应用的token
     * @return full url
     */
    public static String getCsdnUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
243
        return MessageFormat.format(CSDN_USER_INFO_PATTERN, ApiUrl.CSDN.userInfo(), token);
244 245 246 247 248 249 250 251 252 253
    }

    /**
     * 获取csdn授权地址
     *
     * @param clientId    csdn 应用的Client ID
     * @param redirectUrl csdn 应用授权成功后的回调地址
     * @return full url
     */
    public static String getCsdnAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
254
        return MessageFormat.format(CSDN_AUTHORIZE_PATTERN, ApiUrl.CSDN.authorize(), clientId, redirectUrl);
255 256 257 258 259 260 261 262 263 264 265
    }

    /**
     * 获取coding token的接口地址
     *
     * @param clientId     coding应用的App Key
     * @param clientSecret coding应用的App Secret
     * @param code         coding授权前的code,用来换token
     * @return full url
     */
    public static String getCodingAccessTokenUrl(String clientId, String clientSecret, String code) {
智布道's avatar
智布道 已提交
266
        return MessageFormat.format(CODING_ACCESS_TOKEN_PATTERN, ApiUrl.CODING.accessToken(), clientId, clientSecret, code);
267 268 269 270 271 272 273 274 275
    }

    /**
     * 获取coding用户详情的接口地址
     *
     * @param token coding 应用的token
     * @return full url
     */
    public static String getCodingUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
276
        return MessageFormat.format(CODING_USER_INFO_PATTERN, ApiUrl.CODING.userInfo(), token);
277 278 279 280 281 282 283 284 285 286
    }

    /**
     * 获取coding授权地址
     *
     * @param clientId    coding 应用的Client ID
     * @param redirectUrl coding 应用授权成功后的回调地址
     * @return full url
     */
    public static String getCodingAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
287
        return MessageFormat.format(CODING_AUTHORIZE_PATTERN, ApiUrl.CODING.authorize(), clientId, redirectUrl);
288 289
    }

290 291 292 293 294 295 296 297 298
    /**
     * 获取腾讯云开发者平台 token的接口地址
     *
     * @param clientId     coding应用的App Key
     * @param clientSecret coding应用的App Secret
     * @param code         coding授权前的code,用来换token
     * @return full url
     */
    public static String getTencentCloudAccessTokenUrl(String clientId, String clientSecret, String code) {
智布道's avatar
智布道 已提交
299
        return MessageFormat.format(TENCENT_ACCESS_TOKEN_PATTERN, ApiUrl.TENCENTCLOUD.accessToken(), clientId, clientSecret, code);
300 301 302 303 304 305 306 307 308
    }

    /**
     * 获取腾讯云开发者平台用户详情的接口地址
     *
     * @param token coding 应用的token
     * @return full url
     */
    public static String getTencentCloudUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
309
        return MessageFormat.format(TENCENT_USER_INFO_PATTERN, ApiUrl.TENCENTCLOUD.userInfo(), token);
310 311 312 313 314 315 316 317 318 319
    }

    /**
     * 获取腾讯云开发者平台授权地址
     *
     * @param clientId    coding 应用的Client ID
     * @param redirectUrl coding 应用授权成功后的回调地址
     * @return full url
     */
    public static String getTencentCloudAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
320
        return MessageFormat.format(TENCENT_AUTHORIZE_PATTERN, ApiUrl.TENCENTCLOUD.authorize(), clientId, redirectUrl);
321 322
    }

323 324 325 326 327 328 329 330 331 332
    /**
     * 获取oschina token的接口地址
     *
     * @param clientId     oschina应用的App Key
     * @param clientSecret oschina应用的App Secret
     * @param code         oschina授权前的code,用来换token
     * @param redirectUri  待跳转的页面
     * @return full url
     */
    public static String getOschinaAccessTokenUrl(String clientId, String clientSecret, String code, String redirectUri) {
智布道's avatar
智布道 已提交
333
        return MessageFormat.format(OSCHINA_ACCESS_TOKEN_PATTERN, ApiUrl.OSCHINA.accessToken(), clientId, clientSecret, code, redirectUri);
334 335 336 337 338 339 340 341 342
    }

    /**
     * 获取oschina用户详情的接口地址
     *
     * @param token oschina 应用的token
     * @return full url
     */
    public static String getOschinaUserInfoUrl(String token) {
智布道's avatar
智布道 已提交
343
        return MessageFormat.format(OSCHINA_USER_INFO_PATTERN, ApiUrl.OSCHINA.userInfo(), token);
344 345 346 347 348 349 350 351 352 353
    }

    /**
     * 获取oschina授权地址
     *
     * @param clientId    oschina 应用的Client ID
     * @param redirectUrl oschina 应用授权成功后的回调地址
     * @return full url
     */
    public static String getOschinaAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
354
        return MessageFormat.format(OSCHINA_AUTHORIZE_PATTERN, ApiUrl.OSCHINA.authorize(), clientId, redirectUrl);
355
    }
智布道's avatar
智布道 已提交
356
}