@@ -13,7 +13,7 @@ import java.text.MessageFormat;
*/
public class UrlBuilder {
private static final String GITHUB_ACCESS_TOKEN_PATTERN = " {0}?client_id={1}&client_secret={2}&code={3}&redirect_uri={4}&state={5} " ;
private static final String GITHUB_ACCESS_TOKEN_PATTERN = " {0}?client_id={1}&client_secret={2}&code={3}&redirect_uri={4} " ;
private static final String GITHUB_USER_INFO_PATTERN = " {0}?access_token={1} " ;
private static final String GITHUB_AUTHORIZE_PATTERN = " {0}?client_id={1}&redirect_uri={2}&state={3} " ;
@@ -27,7 +27,7 @@ public class UrlBuilder {
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} " ;
private static final String GITEE_AUTHORIZE_PATTERN = " {0}?client_id={1}&response_type=code&redirect_uri={2}&state={3} " ;
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}×tamp={2}&accessKey={3} " ;
@@ -96,6 +96,15 @@ public class UrlBuilder {
private static final String TOUTIAO_USER_INFO_PATTERN = " {0}?client_key={1}&access_token={2} " ;
private static final String TOUTIAO_AUTHORIZE_PATTERN = " {0}?client_key={1}&redirect_uri={2}&state={3}&response_type=code&auth_only=1&display=0 " ;
/**
* 获取state, 如果为空, 则默认去当前日期的时间戳
*
* @param state state
*/
private static Object getState ( String state ) {
return StringUtils . isEmpty ( state ) ? String . valueOf ( System . currentTimeMillis ( ) ) : state ;
}
/**
* 获取githubtoken的接口地址
*
@@ -103,11 +112,10 @@ public class UrlBuilder {
* @param clientSecret github 应用的Client Secret
* @param code github 授权前的code, 用来换token
* @param redirectUri 待跳转的页面
* @param state 随机字符串, 用于保持会话状态, 防止CSRF攻击
* @return full url
*/
public static String getGithubAccessTokenUrl ( String clientId , String clientSecret , String code , String redirectUri , String state ) {
return MessageFormat . format ( GITHUB_ACCESS_TOKEN_PATTERN , AuthSource . GITHUB . accessToken ( ) , clientId , clientSecret , code , redirectUri , StringUtils . isEmpty ( state ) ? System . currentTimeMillis ( ) : state );
public static String getGithubAccessTokenUrl ( String clientId , String clientSecret , String code , String redirectUri ) {
return MessageFormat . format ( GITHUB_ACCESS_TOKEN_PATTERN , AuthSource . GITHUB . accessToken ( ) , clientId , clientSecret , code , redirectUri ) ;
}
/**
@@ -129,7 +137,7 @@ public class UrlBuilder {
* @return full url
*/
public static String getGithubAuthorizeUrl ( String clientId , String redirectUrl , String state ) {
return MessageFormat . format ( GITHUB_AUTHORIZE_PATTERN , AuthSource . GITHUB . authorize ( ) , clientId , redirectUrl , StringUtils . isEmpty ( state ) ? System . currentTimeMillis ( ) : state ) ;
return MessageFormat . format ( GITHUB_AUTHORIZE_PATTERN , AuthSource . GITHUB . authorize ( ) , clientId , redirectUrl , getState ( state ) ) ;
}
/**
@@ -164,7 +172,7 @@ public class UrlBuilder {
* @return full url
*/
public static String getWeiboAuthorizeUrl ( String clientId , String redirectUrl , String state ) {
return MessageFormat . format ( WEIBO_AUTHORIZE_PATTERN , AuthSource . WEIBO . authorize ( ) , clientId , redirectUrl , StringUtils . isEmpty ( state ) ? System . currentTimeMillis ( ) : state ) ;
return MessageFormat . format ( WEIBO_AUTHORIZE_PATTERN , AuthSource . WEIBO . authorize ( ) , clientId , redirectUrl , getState ( state ) ) ;
}
/**
@@ -195,10 +203,11 @@ public class UrlBuilder {
*
* @param clientId gitee 应用的Client ID
* @param redirectUrl gitee 应用授权成功后的回调地址
* @param state 随机字符串, 用于保持会话状态, 防止CSRF攻击
* @return json
*/
public static String getGiteeAuthorizeUrl ( String clientId , String redirectUrl ) {
return MessageFormat . format ( GITEE_AUTHORIZE_PATTERN , AuthSource . GITEE . authorize ( ) , clientId , redirectUrl ) ;
public static String getGiteeAuthorizeUrl ( String clientId , String redirectUrl , String state ) {
return MessageFormat . format ( GITEE_AUTHORIZE_PATTERN , AuthSource . GITEE . authorize ( ) , clientId , redirectUrl , getState ( state ) );
}
/**