UrlBuilder.java 15.0 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}";

54 55
    private static final String ALIPAY_AUTHORIZE_PATTERN = "{0}?app_id={1}&scope=auth_user&redirect_uri={2}&state=init";

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

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

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

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

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

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

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

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

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

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

    /**
     * 获取钉钉用户信息的地址
     *
     * @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
智布道 已提交
178
        return MessageFormat.format(DING_TALK_USER_INFO_PATTERN, ApiUrl.DINGTALK.userInfo(), signature, timestamp, accessKey);
智布道's avatar
智布道 已提交
179
    }
180 181 182 183 184 185 186 187 188 189 190

    /**
     * 获取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
智布道 已提交
191
        return MessageFormat.format(BAIDU_ACCESS_TOKEN_PATTERN, ApiUrl.BAIDU.accessToken(), clientId, clientSecret, code, redirectUri);
192 193 194 195 196 197 198 199 200
    }

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

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

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

    /**
     * 获取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
智布道 已提交
235
        return MessageFormat.format(CSDN_ACCESS_TOKEN_PATTERN, ApiUrl.CSDN.accessToken(), clientId, clientSecret, code, redirectUri);
236 237 238 239 240 241 242 243 244
    }

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

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

    /**
     * 获取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
智布道 已提交
268
        return MessageFormat.format(CODING_ACCESS_TOKEN_PATTERN, ApiUrl.CODING.accessToken(), clientId, clientSecret, code);
269 270 271 272 273 274 275 276 277
    }

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

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

292 293 294 295 296 297 298 299 300
    /**
     * 获取腾讯云开发者平台 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
智布道 已提交
301
        return MessageFormat.format(TENCENT_ACCESS_TOKEN_PATTERN, ApiUrl.TENCENTCLOUD.accessToken(), clientId, clientSecret, code);
302 303 304 305 306 307 308 309 310
    }

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

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

325 326 327 328 329 330 331 332 333 334
    /**
     * 获取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
智布道 已提交
335
        return MessageFormat.format(OSCHINA_ACCESS_TOKEN_PATTERN, ApiUrl.OSCHINA.accessToken(), clientId, clientSecret, code, redirectUri);
336 337 338 339 340 341 342 343 344
    }

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

    /**
     * 获取oschina授权地址
     *
     * @param clientId    oschina 应用的Client ID
     * @param redirectUrl oschina 应用授权成功后的回调地址
     * @return full url
     */
    public static String getOschinaAuthorizeUrl(String clientId, String redirectUrl) {
智布道's avatar
智布道 已提交
356
        return MessageFormat.format(OSCHINA_AUTHORIZE_PATTERN, ApiUrl.OSCHINA.authorize(), clientId, redirectUrl);
357
    }
358 359 360 361 362 363 364 365 366 367 368

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