Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
justauth
JustAuth
提交
7892f7e5
J
JustAuth
项目概览
justauth
/
JustAuth
大约 1 年 前同步成功
通知
379
Star
15210
Fork
2709
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JustAuth
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7892f7e5
编写于
2月 23, 2019
作者:
智布道
👁
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✨
支持Coding、Csdn和OSChina
上级
1312e69b
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
361 addition
and
6 deletion
+361
-6
README.md
README.md
+8
-2
pom.xml
pom.xml
+6
-0
src/main/java/me/zhyd/oauth/consts/ApiUrlConst.java
src/main/java/me/zhyd/oauth/consts/ApiUrlConst.java
+45
-0
src/main/java/me/zhyd/oauth/model/AuthSource.java
src/main/java/me/zhyd/oauth/model/AuthSource.java
+4
-0
src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
+58
-0
src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
+49
-0
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
+5
-0
src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
+56
-0
src/main/java/me/zhyd/oauth/request/AuthRequest.java
src/main/java/me/zhyd/oauth/request/AuthRequest.java
+9
-0
src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
+1
-1
src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java
src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java
+7
-3
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
+113
-0
未找到文件。
README.md
浏览文件 @
7892f7e5
...
...
@@ -24,8 +24,10 @@
<td
align=
"center"
width=
"200"
><a
href=
"https://github.com"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/github.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://weibo.com"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/weibo.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://www.dingtalk.com"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/dingding.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://
www.dingtalk.com
"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/baidu.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://
developer.baidu.com/
"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/baidu.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://www.csdn.net/"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://coding.net"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/coding.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://www.oschina.net"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/oschinas.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://connect.qq.com/devuser.html#/"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/qq.png"
width=
"30"
></a></td>
<td
align=
"center"
width=
"200"
><a
href=
"https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN"
><img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/wechats.png"
width=
"30"
></a></td>
</tr>
...
...
@@ -38,6 +40,8 @@
<td
align=
"center"
width=
"200"
><a
href=
"#授权钉钉"
>
钉钉
</a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权百度"
>
百度
</a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权CSDN"
>
CSDN
</a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权Coding"
>
Coding
</a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权OSChina"
>
OSChina
</a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权QQ"
>
QQ
</a></td>
<td
align=
"center"
width=
"200"
><a
href=
"#授权微信"
>
微信
</a></td>
</tr>
...
...
@@ -83,7 +87,9 @@ authRequest.login("code");
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/weibo.png"
width=
"20"
>
|
[
AuthWeiboRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthGiteeRequest.java
)
|
<a
href=
"https://open.weibo.com/apps?_blank"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/dingding.png"
width=
"20"
>
|
[
AuthDingTalkRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
)
|
<a
href=
"https://open-doc.dingtalk.com/microapp/serverapi2/kymkv6"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/baidu.png"
width=
"20"
>
|
[
AuthBaiduRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthBaiduRequest.java
)
|
<a
href=
"https://developer.baidu.com/"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png"
width=
"20"
>
| AuthCsdnRequest | 待续 |
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/csdn.png"
width=
"20"
>
|
[
AuthCsdnRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
)
| 待续 |
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/coding.png"
width=
"25"
>
|
[
AuthCodingRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
)
|
<a
href=
"https://open.coding.net/references/oauth/"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/oschinas.png"
width=
"20"
>
|
[
AuthOschinaRequest
](
https://gitee.com/yadong.zhang/JustAuth/blob/master/src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
)
|
<a
href=
"https://www.oschina.net/openapi/docs/openapi_user"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/qq.png"
width=
"20"
>
| AuthQqRequest |
<a
href=
"https://connect.qq.com/"
target=
"_blank"
>
参考文档
</a>
|
|
<img
src=
"https://gitee.com/yadong.zhang/static/raw/master/JustAuth/wechats.png"
width=
"20"
>
| AuthWechatRequest | 待续 |
...
...
pom.xml
浏览文件 @
7892f7e5
...
...
@@ -45,6 +45,7 @@
<junit-version>
4.11
</junit-version>
<servlet-api-version>
2.5
</servlet-api-version>
<fastjson-version>
1.2.44
</fastjson-version>
<google-api-version>
1.28.0
</google-api-version>
</properties>
<dependencies>
...
...
@@ -74,6 +75,11 @@
<artifactId>
fastjson
</artifactId>
<version>
${fastjson-version}
</version>
</dependency>
<dependency>
<groupId>
com.google.api-client
</groupId>
<artifactId>
google-api-client
</artifactId>
<version>
${google-api-version}
</version>
</dependency>
</dependencies>
<build>
...
...
src/main/java/me/zhyd/oauth/consts/ApiUrlConst.java
浏览文件 @
7892f7e5
...
...
@@ -86,4 +86,49 @@ public class ApiUrlConst {
*/
public
static
final
String
BAIDU_REVOKE_URL
=
"https://openapi.baidu.com/rest/2.0/passport/auth/revokeAuthorization"
;
/**
* 获取csdn access_token的地址
*/
public
static
final
String
CSDN_ACCESS_TOKEN_URL
=
"https://api.csdn.net/oauth2/access_token"
;
/**
* 获取csdn用户信息的地址
*/
public
static
final
String
CSDN_USER_INFO_URL
=
"https://api.csdn.net/user/getinfo"
;
/**
* 获取csdn授权地址
*/
public
static
final
String
CSDN_AUTHORIZE_URL
=
"https://api.csdn.net/oauth2/authorize"
;
/**
* 获取coding access_token的地址
*/
public
static
final
String
CODING_ACCESS_TOKEN_URL
=
"https://coding.net/api/oauth/access_token"
;
/**
* 获取coding用户信息的地址
*/
public
static
final
String
CODING_USER_INFO_URL
=
"https://coding.net/api/account/current_user"
;
/**
* 获取coding授权地址
*/
public
static
final
String
CODING_AUTHORIZE_URL
=
"https://coding.net/oauth_authorize.html"
;
/**
* 获取oschina access_token的地址
*/
public
static
final
String
OSCHINA_ACCESS_TOKEN_URL
=
"https://www.oschina.net/action/openapi/token"
;
/**
* 获取oschina用户信息的地址
*/
public
static
final
String
OSCHINA_USER_INFO_URL
=
"https://www.oschina.net/action/openapi/user"
;
/**
* 获取oschina授权地址
*/
public
static
final
String
OSCHINA_AUTHORIZE_URL
=
"https://www.oschina.net/action/oauth2/authorize"
;
}
src/main/java/me/zhyd/oauth/model/AuthSource.java
浏览文件 @
7892f7e5
...
...
@@ -13,6 +13,10 @@ public enum AuthSource {
WEIBO
,
DINGTALK
,
BAIDU
,
CSDN
,
CODING
,
OSCHINA
,
QQ
,
WECHAT
,
GOOGLE
,
...
...
src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java
0 → 100644
浏览文件 @
7892f7e5
package
me.zhyd.oauth.request
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhyd.oauth.config.AuthConfig
;
import
me.zhyd.oauth.exception.AuthException
;
import
me.zhyd.oauth.model.AuthSource
;
import
me.zhyd.oauth.model.AuthUser
;
import
me.zhyd.oauth.model.AuthUserGender
;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @website https://www.zhyd.me
* @date 2019/2/23 15:48
* @since 1.8
*/
public
class
AuthCodingRequest
extends
BaseAuthRequest
{
public
AuthCodingRequest
(
AuthConfig
config
)
{
super
(
config
,
AuthSource
.
CODING
);
}
@Override
protected
String
getAccessToken
(
String
code
)
{
String
accessTokenUrl
=
UrlBuilder
.
getCodingAccessTokenUrl
(
config
.
getClientId
(),
config
.
getClientSecret
(),
code
);
HttpResponse
response
=
HttpRequest
.
post
(
accessTokenUrl
).
execute
();
JSONObject
accessTokenObject
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
accessTokenObject
.
getIntValue
(
"code"
)
!=
0
)
{
throw
new
AuthException
(
"Unable to get token from coding using code ["
+
code
+
"]"
);
}
return
accessTokenObject
.
getString
(
"access_token"
);
}
@Override
protected
AuthUser
getUserInfo
(
String
accessToken
)
{
HttpResponse
response
=
HttpRequest
.
get
(
UrlBuilder
.
getCodingUserInfoUrl
(
accessToken
)).
execute
();
JSONObject
object
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
object
.
getIntValue
(
"code"
)
!=
0
)
{
throw
new
AuthException
(
object
.
getString
(
"msg"
));
}
return
AuthUser
.
builder
()
.
username
(
object
.
getString
(
"name"
))
.
avatar
(
object
.
getString
(
"avatar"
))
.
blog
(
"https://coding.net/"
+
object
.
getString
(
"path"
))
.
nickname
(
object
.
getString
(
"name"
))
.
company
(
object
.
getString
(
"company"
))
.
location
(
object
.
getString
(
"location"
))
.
gender
(
AuthUserGender
.
getRealGender
(
object
.
getString
(
"sex"
)))
.
email
(
object
.
getString
(
"email"
))
.
remark
(
object
.
getString
(
"slogan"
))
.
accessToken
(
accessToken
)
.
source
(
AuthSource
.
CODING
)
.
build
();
}
}
src/main/java/me/zhyd/oauth/request/AuthCsdnRequest.java
0 → 100644
浏览文件 @
7892f7e5
package
me.zhyd.oauth.request
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhyd.oauth.config.AuthConfig
;
import
me.zhyd.oauth.exception.AuthException
;
import
me.zhyd.oauth.model.AuthSource
;
import
me.zhyd.oauth.model.AuthUser
;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @website https://www.zhyd.me
* @date 2019/2/23 15:00
* @since 1.8
*/
public
class
AuthCsdnRequest
extends
BaseAuthRequest
{
public
AuthCsdnRequest
(
AuthConfig
config
)
{
super
(
config
,
AuthSource
.
CSDN
);
}
@Override
protected
String
getAccessToken
(
String
code
)
{
String
accessTokenUrl
=
UrlBuilder
.
getCsdnAccessTokenUrl
(
config
.
getClientId
(),
config
.
getClientSecret
(),
code
,
config
.
getRedirectUri
());
HttpResponse
response
=
HttpRequest
.
post
(
accessTokenUrl
).
execute
();
JSONObject
accessTokenObject
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
accessTokenObject
.
containsKey
(
"error_code"
))
{
throw
new
AuthException
(
"Unable to get token from csdn using code ["
+
code
+
"]"
);
}
return
accessTokenObject
.
getString
(
"access_token"
);
}
@Override
protected
AuthUser
getUserInfo
(
String
accessToken
)
{
HttpResponse
response
=
HttpRequest
.
get
(
UrlBuilder
.
getCsdnUserInfoUrl
(
accessToken
)).
execute
();
JSONObject
object
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
object
.
containsKey
(
"error_code"
))
{
throw
new
AuthException
(
object
.
getString
(
"error"
));
}
return
AuthUser
.
builder
()
.
username
(
object
.
getString
(
"username"
))
.
accessToken
(
accessToken
)
.
source
(
AuthSource
.
CSDN
)
.
build
();
}
}
src/main/java/me/zhyd/oauth/request/AuthDingTalkRequest.java
浏览文件 @
7892f7e5
...
...
@@ -27,6 +27,11 @@ public class AuthDingTalkRequest extends BaseAuthRequest {
super
(
config
,
AuthSource
.
DINGTALK
);
}
@Override
protected
String
getAccessToken
(
String
code
)
{
throw
new
AuthException
(
ResponseStatus
.
NOT_IMPLEMENTED
);
}
@Override
protected
AuthUser
getUserInfo
(
String
code
)
{
// 根据timestamp, appSecret计算签名值
...
...
src/main/java/me/zhyd/oauth/request/AuthOschinaRequest.java
0 → 100644
浏览文件 @
7892f7e5
package
me.zhyd.oauth.request
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
me.zhyd.oauth.config.AuthConfig
;
import
me.zhyd.oauth.exception.AuthException
;
import
me.zhyd.oauth.model.AuthSource
;
import
me.zhyd.oauth.model.AuthUser
;
import
me.zhyd.oauth.model.AuthUserGender
;
import
me.zhyd.oauth.utils.UrlBuilder
;
/**
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0
* @website https://www.zhyd.me
* @date 2019/2/23 15:48
* @since 1.8
*/
public
class
AuthOschinaRequest
extends
BaseAuthRequest
{
public
AuthOschinaRequest
(
AuthConfig
config
)
{
super
(
config
,
AuthSource
.
OSCHINA
);
}
@Override
protected
String
getAccessToken
(
String
code
)
{
String
accessTokenUrl
=
UrlBuilder
.
getOschinaAccessTokenUrl
(
config
.
getClientId
(),
config
.
getClientSecret
(),
code
,
config
.
getRedirectUri
());
HttpResponse
response
=
HttpRequest
.
post
(
accessTokenUrl
).
execute
();
JSONObject
accessTokenObject
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
accessTokenObject
.
containsKey
(
"error"
))
{
throw
new
AuthException
(
"Unable to get token from oschina using code ["
+
code
+
"]"
);
}
return
accessTokenObject
.
getString
(
"access_token"
);
}
@Override
protected
AuthUser
getUserInfo
(
String
accessToken
)
{
HttpResponse
response
=
HttpRequest
.
get
(
UrlBuilder
.
getOschinaUserInfoUrl
(
accessToken
)).
execute
();
JSONObject
object
=
JSONObject
.
parseObject
(
response
.
body
());
if
(
object
.
containsKey
(
"error"
))
{
throw
new
AuthException
(
object
.
getString
(
"error_description"
));
}
return
AuthUser
.
builder
()
.
username
(
object
.
getString
(
"name"
))
.
nickname
(
object
.
getString
(
"name"
))
.
avatar
(
object
.
getString
(
"avatar"
))
.
blog
(
object
.
getString
(
"url"
))
.
location
(
object
.
getString
(
"location"
))
.
gender
(
AuthUserGender
.
getRealGender
(
object
.
getString
(
"gender"
)))
.
email
(
object
.
getString
(
"email"
))
.
accessToken
(
accessToken
)
.
source
(
AuthSource
.
OSCHINA
)
.
build
();
}
}
src/main/java/me/zhyd/oauth/request/AuthRequest.java
浏览文件 @
7892f7e5
...
...
@@ -49,4 +49,13 @@ public interface AuthRequest {
default
AuthResponse
revoke
(
String
accessToken
)
{
throw
new
AuthException
(
ResponseStatus
.
NOT_IMPLEMENTED
);
}
/**
* 刷新access token (续期)
*
* @param accessToken 登录成功后返回的accessToken
*/
default
AuthResponse
refresh
(
String
accessToken
)
{
throw
new
AuthException
(
ResponseStatus
.
NOT_IMPLEMENTED
);
}
}
src/main/java/me/zhyd/oauth/request/AuthWeiboRequest.java
浏览文件 @
7892f7e5
...
...
@@ -59,7 +59,7 @@ public class AuthWeiboRequest extends BaseAuthRequest {
.
location
(
object
.
getString
(
"location"
))
.
remark
(
object
.
getString
(
"description"
))
.
gender
(
AuthUserGender
.
getRealGender
(
object
.
getString
(
"gender"
)))
.
accessToken
(
GlobalAuthUtil
.
parseStringToMap
(
accessToken
).
get
(
"access_token
=
"
))
.
accessToken
(
GlobalAuthUtil
.
parseStringToMap
(
accessToken
).
get
(
"access_token"
))
.
source
(
AuthSource
.
WEIBO
)
.
build
();
}
...
...
src/main/java/me/zhyd/oauth/request/BaseAuthRequest.java
浏览文件 @
7892f7e5
...
...
@@ -32,9 +32,7 @@ public abstract class BaseAuthRequest implements AuthRequest {
}
}
protected
String
getAccessToken
(
String
code
)
{
return
null
;
}
protected
abstract
String
getAccessToken
(
String
code
);
protected
abstract
AuthUser
getUserInfo
(
String
accessToken
);
...
...
@@ -69,6 +67,12 @@ public abstract class BaseAuthRequest implements AuthRequest {
case
GITHUB:
authorizeUrl
=
UrlBuilder
.
getGithubAuthorizeUrl
(
config
.
getClientId
(),
config
.
getRedirectUri
());
break
;
case
CSDN:
authorizeUrl
=
UrlBuilder
.
getCsdnAuthorizeUrl
(
config
.
getClientId
(),
config
.
getRedirectUri
());
break
;
case
CODING:
authorizeUrl
=
UrlBuilder
.
getCodingAuthorizeUrl
(
config
.
getClientId
(),
config
.
getRedirectUri
());
break
;
case
QQ:
break
;
case
WECHAT:
...
...
src/main/java/me/zhyd/oauth/utils/UrlBuilder.java
浏览文件 @
7892f7e5
...
...
@@ -35,6 +35,18 @@ public class UrlBuilder {
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}"
;
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}"
;
private
static
final
String
CODING_AUTHORIZE_PATTERN
=
"{0}?client_id={1}&response_type=code&redirect_uri={2}"
;
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}"
;
/**
* 获取githubtoken的接口地址
*
...
...
@@ -203,4 +215,105 @@ public class UrlBuilder {
public
static
String
getBaiduRevokeUrl
(
String
accessToken
)
{
return
MessageFormat
.
format
(
BAIDU_REVOKE_PATTERN
,
ApiUrlConst
.
BAIDU_REVOKE_URL
,
accessToken
);
}
/**
* 获取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
)
{
return
MessageFormat
.
format
(
CSDN_ACCESS_TOKEN_PATTERN
,
ApiUrlConst
.
CSDN_ACCESS_TOKEN_URL
,
clientId
,
clientSecret
,
code
,
redirectUri
);
}
/**
* 获取csdn用户详情的接口地址
*
* @param token csdn 应用的token
* @return full url
*/
public
static
String
getCsdnUserInfoUrl
(
String
token
)
{
return
MessageFormat
.
format
(
CSDN_USER_INFO_PATTERN
,
ApiUrlConst
.
CSDN_USER_INFO_URL
,
token
);
}
/**
* 获取csdn授权地址
*
* @param clientId csdn 应用的Client ID
* @param redirectUrl csdn 应用授权成功后的回调地址
* @return full url
*/
public
static
String
getCsdnAuthorizeUrl
(
String
clientId
,
String
redirectUrl
)
{
return
MessageFormat
.
format
(
CSDN_AUTHORIZE_PATTERN
,
ApiUrlConst
.
CSDN_AUTHORIZE_URL
,
clientId
,
redirectUrl
);
}
/**
* 获取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
)
{
return
MessageFormat
.
format
(
CODING_ACCESS_TOKEN_PATTERN
,
ApiUrlConst
.
CODING_ACCESS_TOKEN_URL
,
clientId
,
clientSecret
,
code
);
}
/**
* 获取coding用户详情的接口地址
*
* @param token coding 应用的token
* @return full url
*/
public
static
String
getCodingUserInfoUrl
(
String
token
)
{
return
MessageFormat
.
format
(
CODING_USER_INFO_PATTERN
,
ApiUrlConst
.
CODING_USER_INFO_URL
,
token
);
}
/**
* 获取coding授权地址
*
* @param clientId coding 应用的Client ID
* @param redirectUrl coding 应用授权成功后的回调地址
* @return full url
*/
public
static
String
getCodingAuthorizeUrl
(
String
clientId
,
String
redirectUrl
)
{
return
MessageFormat
.
format
(
CODING_AUTHORIZE_PATTERN
,
ApiUrlConst
.
CODING_AUTHORIZE_URL
,
clientId
,
redirectUrl
);
}
/**
* 获取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
)
{
return
MessageFormat
.
format
(
OSCHINA_ACCESS_TOKEN_PATTERN
,
ApiUrlConst
.
OSCHINA_ACCESS_TOKEN_URL
,
clientId
,
clientSecret
,
code
,
redirectUri
);
}
/**
* 获取oschina用户详情的接口地址
*
* @param token oschina 应用的token
* @return full url
*/
public
static
String
getOschinaUserInfoUrl
(
String
token
)
{
return
MessageFormat
.
format
(
OSCHINA_USER_INFO_PATTERN
,
ApiUrlConst
.
OSCHINA_USER_INFO_URL
,
token
);
}
/**
* 获取oschina授权地址
*
* @param clientId oschina 应用的Client ID
* @param redirectUrl oschina 应用授权成功后的回调地址
* @return full url
*/
public
static
String
getOschinaAuthorizeUrl
(
String
clientId
,
String
redirectUrl
)
{
return
MessageFormat
.
format
(
OSCHINA_AUTHORIZE_PATTERN
,
ApiUrlConst
.
OSCHINA_AUTHORIZE_URL
,
clientId
,
redirectUrl
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录